:root{color-scheme:dark;--bg:#141719;--panel:#1e2325;--panel-2:#272d30;--text:#f6f1e7;--muted:#b7b8b2;--accent:#edc680;--accent-dark:#302617;--line:#3c4345;--red:#b4544b;--radius:14px;--shadow:0 20px 65px #0005;font-family:Segoe UI,Arial,sans-serif;font-size:16px;background:var(--bg);color:var(--text)}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;min-height:44px;border:1px solid var(--line);border-radius:8px;padding:10px 15px;background:var(--panel-2);color:var(--text);font-weight:600;font-size:.9rem;line-height:1.35;text-decoration:none;cursor:pointer;transition:background .15s,border-color .15s,transform .15s;white-space:normal}button:hover,.button:hover{background:#394044;color:#fff;border-color:#777e7c}button:active,.button:active{background:#48504f;color:#fff;transform:translateY(1px)}button:disabled,.button[aria-disabled=true]{background:#292e30;color:#a6aba9;border-color:#414746;cursor:not-allowed;transform:none}.button.primary{background:var(--accent);border-color:var(--accent);color:#241d11}.button.primary:hover{background:#ffdb9d;border-color:#ffdb9d;color:#171209}.button.primary:active{background:#d9b16a;color:#171209}.button.primary:disabled{background:#77684f;border-color:#77684f;color:#f1ece2}.button.ghost{background:transparent}.button.ghost:hover{background:#303739;color:#fff}.button.ghost:active{background:#444b4d;color:#fff}.icon-button{width:44px;height:44px;padding:0;flex:none;font-size:1.4rem}.muted{color:var(--muted)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible,[tabindex]:focus-visible{outline:3px solid #f3cc83;outline-offset:3px}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}input[type=checkbox]{width:21px;height:21px;flex:none}input,select{width:100%;min-height:45px;border:1px solid #485053;border-radius:7px;background:#171c1e;color:var(--text);padding:10px 12px}input::placeholder{color:#a0a6a4}input[type=range]{padding:0;min-height:30px}a{color:var(--accent)}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Georgia,'Times New Roman',serif;font-weight:400}h2{font-size:2rem;line-height:1.14}h3{font-size:1rem}.site-header{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1600px;margin:auto;padding:24px 5vw;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:13px;color:var(--muted);font-size:.63rem;letter-spacing:.2em;line-height:1.8;text-decoration:none}.brand strong{display:block;color:var(--text);font-size:1.1rem;letter-spacing:.02em}.brand-mark{font-size:2.5rem;line-height:1;color:var(--accent);font-family:Georgia,serif}.header-actions{display:flex;gap:8px;align-items:center}.header-actions .button{font-size:.8rem;min-height:40px;padding:9px 12px}.header-actions .return-link{border-color:transparent}.skip-link{position:fixed;left:12px;top:-100px;padding:14px;background:var(--accent);color:#171209;z-index:100}.skip-link:focus{top:12px}main{max-width:1600px;margin:0 auto}#galleryView{padding:0 5vw}.collection-intro{display:flex;gap:4rem;justify-content:space-between;align-items:center;padding:62px 0 47px}.intro-copy{max-width:760px}.eyebrow{font-size:.68rem;font-weight:700;letter-spacing:.17em;color:var(--accent);margin-bottom:19px}.eyebrow span{font-size:.5rem;margin-right:8px}h1{font-size:clamp(2.7rem,4.8vw,4.8rem);line-height:1.04;letter-spacing:-.05em;margin-bottom:23px}h1 em{font-weight:400;color:var(--accent)}.intro-description{color:var(--muted);font-size:.98rem;max-width:580px;line-height:1.75;margin-bottom:24px}.intro-actions{display:flex;gap:20px;align-items:center}.calm-note{color:#aeb5b1;font-size:.74rem}.collection-numbers{width:285px;flex:none;display:grid;grid-template-columns:repeat(3,1fr);padding-top:24px;align-self:center;border-top:1px solid #645943;text-align:center}.collection-numbers strong{display:block;font-family:Georgia,serif;font-size:2.1rem;line-height:1;color:var(--accent)}.collection-numbers span{display:block;max-width:70px;margin:10px auto 0;color:var(--muted);font-size:.7rem;line-height:1.5}.collection-numbers p{grid-column:1/-1;margin:25px 0 0;color:#b7b8b2;line-height:1.65;font-size:.72rem;border-top:1px solid var(--line);padding-top:20px}.continue-section{margin:0 0 40px}.continue-card{display:flex;align-items:center;gap:22px;padding:14px;border:1px solid #665640;background:linear-gradient(110deg,#2d2a23,#202629);border-radius:var(--radius)}.continue-card img{width:160px;aspect-ratio:3/2;object-fit:cover;border-radius:7px}.continue-copy{flex:1}.continue-copy .eyebrow{margin-bottom:7px;font-size:.6rem}.continue-copy h3{font:1.3rem Georgia,serif;margin-bottom:7px}.continue-copy p:last-child{margin-bottom:0;color:var(--muted);font-size:.79rem;line-height:1.4}.continue-card .button{margin-right:10px}.gallery-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.gallery-heading .eyebrow{margin-bottom:10px}.gallery-heading h2{font-size:2rem;margin-bottom:0;letter-spacing:-.025em}.gallery-heading>p{font-size:.76rem;color:var(--muted);margin:0 0 3px}.filters{display:grid;grid-template-columns:minmax(220px,1.7fr) repeat(3,minmax(130px,1fr)) auto;gap:14px;align-items:end;margin:27px 0 28px;padding-bottom:26px;border-bottom:1px solid var(--line)}.field label{display:block;color:#bfc4bf;font-size:.68rem;font-weight:600;margin-bottom:8px;letter-spacing:.03em}.field input,.field select{font-size:.81rem;height:44px;min-height:44px}.search-wrap{position:relative}.search-wrap>span{position:absolute;top:8px;left:12px;font-size:1.3rem;color:var(--muted)}.search-wrap input{padding-left:39px}.filter-reset{font-size:.77rem;padding-left:11px;padding-right:11px}.gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px 23px}.puzzle-card{min-width:0;position:relative}.card-open{display:block;text-align:left;width:100%;padding:0;border:0;border-radius:10px;background:transparent;box-shadow:none;overflow:hidden}.card-open:hover{background:transparent;border:0;transform:none}.card-open:active{background:transparent;transform:none}.card-image-wrap{display:block;overflow:hidden;aspect-ratio:3/2;background:#272e2f;border:1px solid #444b49;border-radius:9px;position:relative}.card-image-wrap img{display:block;object-fit:cover;width:100%;height:100%;transition:transform .4s}.card-open:hover .card-image-wrap img{transform:scale(1.035)}.card-open:hover .card-image-wrap{border-color:var(--accent)}.card-caption{display:block;padding:13px 0 0}.card-title{display:block;color:var(--text);font-size:.92rem;line-height:1.3;font-weight:600;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin-bottom:6px}.card-style{display:block;color:var(--muted);font-size:.69rem;line-height:1.4;font-weight:400}.favorite-button{position:absolute;right:9px;top:9px;z-index:1;width:38px;height:38px;min-height:38px;padding:0;background:#15191dd9;color:#fff;border:1px solid #ffffff45;border-radius:50%;font-size:1.1rem}.favorite-button:hover{background:#2a3337;color:#ffdc97;border-color:#f3cc83}.favorite-button[aria-pressed=true]{background:#edc680;color:#2d2010;border-color:#f7dba6}.card-badge{position:absolute;bottom:9px;left:9px;display:inline-flex;gap:5px;align-items:center;max-width:90%;font-size:.63rem;line-height:1.3;font-weight:600;padding:6px 8px;background:#14271fef;color:#c5f3d7;border:1px solid #7aa68e;border-radius:5px}.card-badge.started{background:#2a2217ed;color:#ffe0a5;border-color:#ad9260}.empty-state{text-align:center;padding:55px 20px 85px;color:var(--muted)}.empty-state>span{font-size:3rem;color:var(--accent)}.empty-state h3{color:var(--text);font:1.75rem Georgia,serif;margin:15px 0}.empty-state p{font-size:.9rem}.gallery-footer{display:flex;justify-content:space-between;gap:15px;color:#a3aaa7;font-size:.7rem;line-height:1.6;border-top:1px solid var(--line);padding:27px 0 35px;margin-top:56px}.gallery-footer span span{margin:0 8px;font-size:.45rem;color:var(--accent)}.notice{display:flex;justify-content:space-between;align-items:center;gap:12px;max-width:calc(1600px - 10vw);margin:16px 5vw 0;padding:9px 14px;background:#3b3020;border:1px solid #a1824d;color:#ffe8bc;border-radius:9px;font-size:.84rem;line-height:1.5}.notice .icon-button{color:#ffe8bc;background:transparent;border-color:transparent}.notice.error{background:#402321;border-color:#ba7970;color:#ffe1db}[hidden]{display:none!important}dialog{color:var(--text);background:var(--panel);border:1px solid #57605e;border-radius:17px;padding:0;max-width:calc(100vw - 32px);max-height:calc(100dvh - 40px);box-shadow:var(--shadow)}dialog::backdrop{background:#070a0de0;backdrop-filter:blur(5px)}.dialog-close{position:absolute;z-index:2;right:12px;top:12px;background:#171c20e8;border-color:#6a7474;color:#fff;border-radius:50%}.preview-dialog{width:1120px}.preview-layout{display:grid;grid-template-columns:1.18fr 1fr}.preview-art{position:relative;min-width:0;background:#111617;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:16px 0 0 16px}.preview-art img{width:100%;height:auto;max-height:calc(100dvh - 50px);object-fit:contain}.preview-style{position:absolute;bottom:20px;left:20px;color:#fff;background:#121b21df;padding:8px 11px;font-size:.68rem;border:1px solid #7d8686;border-radius:5px}.preview-options{padding:38px 30px 25px;min-width:0}.preview-options .eyebrow{font-size:.6rem;margin:6px 30px 12px 0}.preview-options h2{font-size:2rem;letter-spacing:-.025em;margin-bottom:13px;overflow-wrap:anywhere}.preview-options>.muted{font-size:.83rem;line-height:1.7;margin-bottom:16px}.tag-list{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:25px}.tag-list span{font-size:.62rem;color:#c4ccc7;border:1px solid #48514e;border-radius:20px;padding:4px 8px}.difficulty-fieldset{border:0;padding:0;margin:0 0 19px}.difficulty-fieldset legend{font-size:.76rem;font-weight:700;padding:0;margin-bottom:11px}.difficulty-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.difficulty-choice{display:block;position:relative;cursor:pointer}.difficulty-choice input{position:absolute;opacity:0;width:1px;height:1px;min-height:0;margin:0}.difficulty-choice span{display:flex;flex-direction:column;align-items:center;gap:4px;border:1px solid #4b5554;border-radius:7px;padding:10px 4px;color:var(--text);font-weight:600;font-size:.97rem;background:#171e20}.difficulty-choice small{font-size:.56rem;color:#b8c0ba;font-weight:400}.difficulty-choice input:checked+span{background:#3c3323;border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);color:#ffe1a9}.difficulty-choice input:checked+span small{color:#e1cba3}.difficulty-choice input:focus-visible+span{outline:3px solid #f3cc83;outline-offset:3px}.difficulty-choice:hover span{border-color:#b5a385;background:#303b3b}.check-label{display:flex;align-items:center;gap:9px;min-height:44px;cursor:pointer}.check-label strong{font-weight:600;font-size:.79rem}.check-label small{display:block;color:var(--muted);font-size:.66rem;line-height:1.5;margin-top:4px}.rotation-option{border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:17px}.saved-status{font-size:.76rem;color:#d3c6af;line-height:1.55;min-height:24px;margin-bottom:16px}.saved-status strong{color:#f5dfb7}.preview-buttons{display:flex;flex-wrap:wrap;gap:8px}.preview-buttons .primary{flex:1}.preview-buttons .ghost{font-size:.73rem}.quiet-caption{color:#abb4ae;font-size:.65rem;line-height:1.7;margin:13px 0 0}.text-dialog{width:900px;padding:40px}.text-dialog h2{margin:0 30px 23px 0;font-size:2.4rem}.text-dialog>p:not(.eyebrow){font-size:.89rem;line-height:1.75;color:#c0c8c2}.text-dialog h3{color:#f1d69c;margin-top:22px}.help-columns{display:grid;grid-template-columns:1fr 1.1fr;gap:28px}.help-columns ul{padding-left:19px;font-size:.83rem;line-height:1.75;color:#c0c8c2}.help-columns li{padding-bottom:7px}.keyboard-list{font-size:.75rem}.keyboard-list>div{padding:7px 0;border-bottom:1px solid var(--line)}.keyboard-list dt{display:flex;align-items:center;gap:5px;margin-bottom:5px;line-height:1.4}.keyboard-list dd{margin:0;color:#c0c8c2;line-height:1.5}kbd{font:inherit;font-size:.68rem;display:inline-block;min-width:22px;text-align:center;padding:2px 5px;border:1px solid #6b7371;border-radius:4px;color:#f6ebd4;background:#303836}.compact-dialog{width:550px}.backup-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}.import-label{position:relative;overflow:hidden;cursor:pointer}.import-label input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}.import-label:focus-within{outline:3px solid var(--accent);outline-offset:3px}.backup-message{margin-top:17px;white-space:pre-line}.backup-message.error{color:#ffb9af!important}#playView{padding:20px 3vw 35px}.board-shell{color:var(--text)}.board-shell canvas{touch-action:none}.board-shell button{font-size:.8rem}.board-shell input[type=checkbox]{width:19px;height:19px}.board-shell select{font-size:.8rem}
@media(min-width:1600px){.notice{margin-left:auto;margin-right:auto}.site-header{padding-left:80px;padding-right:80px}#galleryView{padding-left:80px;padding-right:80px}}
@media(max-width:1100px){.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:26px 19px}.collection-intro{gap:35px;padding-top:47px}.collection-numbers{width:245px}.filters{grid-template-columns:1.5fr 1fr 1fr;gap:14px}.filters .search-field{grid-column:1/3}.filter-reset{width:auto}.preview-layout{grid-template-columns:1fr 1fr}.preview-options{padding-left:23px;padding-right:23px}.calm-note{max-width:150px;line-height:1.5}}
@media(max-width:760px){.site-header{flex-wrap:wrap;gap:12px;padding:17px 5vw}.brand{font-size:.55rem}.brand strong{font-size:1rem}.header-actions{width:100%;justify-content:space-between;gap:6px}.header-actions .button{font-size:.72rem;padding:8px 10px;min-height:40px}.header-actions .return-link{padding-left:0}.collection-intro{display:block;padding:32px 0 30px}.intro-copy{max-width:650px}.eyebrow{font-size:.6rem;margin-bottom:17px}h1{font-size:3.25rem;line-height:1.03;margin-bottom:20px}.intro-description{font-size:.87rem;line-height:1.75;margin-bottom:20px}.intro-actions{gap:18px}.intro-actions .primary{font-size:.83rem}.calm-note{max-width:130px;font-size:.68rem}.collection-numbers{display:none}.gallery-heading h2{font-size:1.65rem}.gallery-heading>p{font-size:.65rem;max-width:95px;text-align:right}.filters{grid-template-columns:1fr 1fr;gap:13px;margin-top:23px;margin-bottom:23px;padding-bottom:22px}.filters .search-field{grid-column:1/-1}.filters .filter-reset{align-self:end}.filters .field:nth-child(4){grid-column:1}.field input,.field select{font-size:.76rem}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 14px}.card-title{font-size:.8rem;white-space:normal;overflow:visible;line-height:1.45;margin-bottom:4px}.card-style{font-size:.6rem}.card-caption{padding-top:10px}.favorite-button{right:7px;top:7px;width:34px;height:34px;min-height:34px;font-size:1rem}.card-badge{font-size:.56rem;bottom:6px;left:6px;padding:4px 6px}.continue-section{margin-bottom:28px}.continue-card{flex-wrap:wrap;gap:13px;padding:12px}.continue-card img{width:105px}.continue-copy h3{font-size:1.08rem}.continue-copy p:last-child{font-size:.68rem}.continue-copy .eyebrow{font-size:.54rem;letter-spacing:.1em}.continue-card .button{width:100%;margin:0;font-size:.79rem}.gallery-footer{flex-direction:column;gap:7px;margin-top:37px;padding-top:23px;font-size:.66rem}.preview-dialog{max-width:calc(100vw - 20px);max-height:calc(100dvh - 20px)}.preview-layout{display:block}.preview-art{border-radius:16px 16px 0 0;aspect-ratio:3/2;max-height:330px}.preview-art img{width:100%;height:100%;max-height:none;object-fit:contain}.preview-style{bottom:13px;left:13px;font-size:.6rem}.preview-options{padding:23px}.preview-options .eyebrow{margin:0 0 11px}.preview-options h2{font-size:1.85rem}.preview-options>.muted{font-size:.8rem;margin-bottom:13px}.tag-list{margin-bottom:20px}.difficulty-grid{grid-template-columns:repeat(4,1fr)}.text-dialog{padding:30px 22px;max-width:calc(100vw - 20px)}.text-dialog h2{font-size:2rem}.text-dialog>.eyebrow{font-size:.58rem;padding-right:27px}.help-columns{display:block}.notice{font-size:.76rem}#playView{padding:12px 10px 25px}}
@media(max-width:380px){h1{font-size:2.8rem}.header-actions .button{font-size:.67rem;padding:8px 7px}.card-title{font-size:.74rem}.card-style{font-size:.57rem}.gallery-heading h2{font-size:1.48rem}.preview-options{padding:20px 17px}.button{padding:10px 12px}.intro-actions{gap:13px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
