:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;--color-bg: #f8fafc;--color-text-main: #0f172a;--color-text-muted: #64748b;--color-primary: #6366f1;--color-primary-hover: #4f46e5;--color-success: #10b981;--color-danger: #ef4444;--color-warning: #f59e0b;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-height:100vh;background-color:var(--color-bg);color:var(--color-text-main)}*{box-sizing:border-box}button{font-family:inherit}:root{--color-turquoise: #067469}body{background-color:var(--color-turquoise);min-height:100vh}.app{max-width:1200px;margin:0 auto;padding:2rem}.app__header{text-align:center;margin-bottom:1rem}.app__logo{max-width:100%;height:auto;max-height:130px;object-fit:contain}.app__footer{text-align:center;color:#fff9;font-size:.85rem;margin-top:1rem;padding-bottom:1rem;font-weight:500}.app__header h1{margin:0 0 .5rem;font-size:2.5rem;font-weight:800;background:linear-gradient(135deg,#16a34a,#4ade80);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:-.025em}.app__content{display:flex;justify-content:center;gap:.75rem;flex-wrap:wrap;align-items:stretch}.app__calendar-section,.app__board-section{display:flex;flex-direction:column;gap:1.5rem;flex:0 0 400px;width:400px;min-width:0}.calendar{background:#fff;border-radius:1rem;box-shadow:var(--shadow-md);border:1px solid #e2e8f0;padding:1.5rem;display:flex;flex-direction:column;width:380px;height:380px;margin:0 auto}.calendar__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.calendar__title{font-size:1.1rem;font-weight:700;color:var(--color-text-main)}.calendar__header button{background:transparent;border:none;cursor:pointer;color:var(--color-text-muted);padding:.25rem;border-radius:.375rem;transition:all .2s}.calendar__header button:hover{background-color:#f1f5f9;color:var(--color-primary)}.calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}.calendar__weekday{text-align:center;font-size:.75rem;font-weight:600;color:var(--color-text-muted);padding-bottom:.5rem;text-transform:uppercase}.calendar__cell{aspect-ratio:1;border:1px solid transparent;border-radius:.5rem;background:transparent;cursor:pointer;font-size:.9rem;font-weight:500;color:var(--color-text-main);transition:all .2s;display:flex;align-items:center;justify-content:center;padding:0}.calendar__cell.day:hover{background-color:#f1f5f9}.calendar__cell.day.selected{background-color:var(--color-primary);color:#fff;font-weight:600;box-shadow:0 4px 6px -1px #6366f166}.calendar__cell.empty{cursor:default}.app__actions{display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:400px;margin:.5rem auto 0}@media(min-width:701px){.app__actions{flex-basis:100%;order:3}}button.app__solve-button,button.app__stop-button,button.app__pieces-button{width:100%;padding:.875rem;border-radius:.75rem;font-size:1rem;font-weight:600;border:none;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.app__solve-button{background-color:var(--color-primary);color:#fff;box-shadow:0 4px 6px -1px #6366f14d}.app__solve-button:hover:not(:disabled){background-color:var(--color-primary-hover);transform:translateY(-1px)}.app__solve-button:disabled{background-color:#cbd5e1;cursor:not-allowed;box-shadow:none}.app__button-icon{height:20px;width:auto}.app__stop-button{background-color:#fff;border:1px solid #cbd5e1;color:var(--color-text-muted)}.app__stop-button:hover:not(:disabled){background-color:#f8fafc;color:var(--color-danger);border-color:#fca5a5}.app__pieces-button{background-color:transparent;color:#fff;font-size:.9rem;padding:.5rem;text-decoration:underline}.app__pieces-button:hover{color:var(--color-primary-light);background-color:#ffffff1a}.board{display:grid;gap:4px;background-color:#1e293b;padding:8px;border-radius:1rem;box-shadow:var(--shadow-lg);height:380px;aspect-ratio:7 / 8;margin:0 auto}.board__maximize-btn{position:absolute;top:-10px;right:-10px;width:32px;height:32px;border-radius:50%;border:1px solid #cbd5e1;background:#fff;color:var(--color-text-muted);box-shadow:var(--shadow-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.2rem;line-height:1;transition:all .2s;z-index:5}.board__maximize-btn:hover{background:#f8fafc;color:var(--color-primary);transform:scale(1.1);border-color:var(--color-primary)}.board__cell{aspect-ratio:1;background-color:#334155;border-radius:4px;display:flex;align-items:center;justify-content:center;position:relative;font-weight:600;color:#94a3b8;font-size:.8rem;-webkit-user-select:none;user-select:none;transition:background-color .3s}.board__cell.blocked{background-color:#0f172a;border:1px solid #1e293b;color:transparent}.board__cell.visible{background-color:#fff;color:var(--color-text-main);box-shadow:inset 0 0 0 2px var(--color-text-main);z-index:2;font-weight:800}.board__cell.covered{color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:inset 0 0 0 1px #ffffff1a}.app__error{width:100%;padding:1rem;background-color:#fee2e2;color:#991b1b;border-radius:.75rem;text-align:center;font-weight:600;border:1px solid #fecaca}.solution-stats{margin-top:.5rem;width:100%;text-align:center}.solution-stats__content{display:flex;flex-direction:column;gap:.25rem;animation:fadeIn .3s ease-out}.solution-stats__main{display:flex;align-items:center;justify-content:center;gap:.75rem;font-size:1.1rem;color:#fff}.solution-stats__count{font-weight:700}.solution-stats__link{background:none;border:none;color:#ffffffe6;text-decoration:underline;text-underline-offset:4px;cursor:pointer;padding:0;font-size:.95rem;font-weight:500;transition:color .2s}.solution-stats__link:hover{color:#fff}.solution-stats__meta{font-size:.8rem;color:#ffffffb3}.solution-stats__current{font-weight:600;color:#ffffffe6}.solution-stats__placeholder{color:#fff9;font-size:.9rem;font-style:italic;padding:.5rem}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.modal{position:fixed;inset:0;display:grid;place-items:center;z-index:100;padding:1rem}.modal__backdrop{position:absolute;inset:0;background:#0f172a99;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal__panel{position:relative;width:100%;max-width:900px;max-height:90vh;background:#fff;border-radius:1rem;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden}.modal__header{padding:1.25rem;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;align-items:center}.modal__title{font-size:1.25rem;font-weight:700}.modal__close{background:#f1f5f9;border:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;cursor:pointer;color:var(--color-text-muted);transition:all .2s}.modal__close:hover{background:#e2e8f0;color:var(--color-danger)}.modal__content{padding:1.5rem;overflow-y:auto}.piecesGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}.pieceCard{border:1px solid #e2e8f0;border-radius:.75rem;padding:1rem;display:flex;flex-direction:column;gap:.75rem;background-color:#f8fafc;transition:transform .2s}.pieceCard:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);border-color:#cbd5e1}.pieceCard__meta{display:flex;align-items:baseline;justify-content:space-between}.pieceCard__id{font-weight:700;color:var(--color-text-main)}.pieceCard__size{font-size:.85rem;color:var(--color-text-muted)}.pieceCard__shape{display:grid;gap:2px;justify-self:center;align-self:center}.pieceCell{width:20px;height:20px;background:transparent;border-radius:3px}.pieceCell.filled{border:1px solid rgba(0,0,0,.1);box-shadow:inset 0 1px #ffffff4d}.solutionsList{display:flex;flex-direction:column;gap:.5rem;max-height:60vh;overflow-y:auto}.solutionRow{display:flex;justify-content:space-between;align-items:center;padding:.875rem 1rem;border:1px solid #e2e8f0;border-radius:.5rem;background-color:#f8fafc;cursor:pointer;transition:all .2s}.solutionRow:hover{background-color:#f1f5f9;border-color:var(--color-primary);transform:translate(4px)}.solutionRow__number{font-weight:600;color:var(--color-text-main)}.solutionRow__meta{font-size:.85rem;color:var(--color-text-muted)}@media(max-width:1150px){.app__content{flex-wrap:wrap;justify-content:center}.app{padding:1rem}}@media(max-width:700px){.app{padding:.5rem}.app__header{margin-bottom:.75rem;padding-bottom:.5rem}.app__logo{height:60px}.app__content{flex-direction:column;align-items:center;gap:.75rem}.app__calendar-section,.app__board-section{width:100%;min-width:0;max-width:400px;margin:0 auto;gap:.75rem;flex:0 1 auto}.app__calendar-section{order:1}.app__actions{order:2;margin-top:.25rem;margin-bottom:.25rem;width:100%;max-width:380px}.app__board-section{order:3}.calendar{width:100%;max-width:380px;height:auto;aspect-ratio:1 / 1;padding:.75rem}.board{width:100%;max-width:400px;height:auto;aspect-ratio:7 / 8}.board__maximize-btn{display:none}}.modal__large-panel{position:relative;width:auto;height:auto;max-width:95vw;max-height:95vh;background:#fff;border-radius:1rem;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden;padding:1rem}.modal__large-content{flex:1;display:flex;justify-content:center;align-items:center;overflow:hidden;padding:.5rem}.modal__large-content .board{max-height:100%;max-width:100%;aspect-ratio:7/8;width:auto;height:auto;margin:auto}.modal__large-content .board .board__cell{font-size:clamp(.6rem,5vmin,1.8rem);word-break:normal;line-height:1}.modal__close-float{position:absolute;top:1rem;right:1rem;background:#f1f5f9;border:none;width:40px;height:40px;border-radius:50%;font-size:1.5rem;display:grid;place-items:center;cursor:pointer;color:var(--color-text-muted);transition:all .2s;z-index:10}.modal__close-float:hover{background:#e2e8f0;color:var(--color-danger)}.loading-modal__panel{max-width:380px;align-items:center;padding:2.5rem 2rem;background:#fff;border-radius:1.5rem}.loading-modal__content{display:flex;flex-direction:column;align-items:center;gap:2rem;width:100%}.loading-piece-container{height:100px;display:flex;align-items:center;justify-content:center;animation:float 3s ease-in-out infinite}.loading-piece{display:grid;gap:4px;animation:popIn .4s cubic-bezier(.175,.885,.32,1.275)}.loading-cell{width:24px;height:24px;border-radius:6px;transition:background-color .3s}.loading-cell.filled{box-shadow:inset 0 2px #fff6,0 2px 4px #0000001a;border:1px solid rgba(0,0,0,.05)}.loading-text-container{text-align:center;display:flex;flex-direction:column;gap:.25rem}.loading-title{font-size:1.25rem;font-weight:700;color:var(--color-text-main);background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-turquoise) 100%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.loading-subtitle{font-size:.9rem;color:var(--color-text-muted)}.loading-stop-btn{padding:.6rem 2rem;font-size:.9rem;margin-top:.5rem;border-radius:2rem}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}
