.puzzle-board{position:relative;overflow:hidden;isolation:isolate;height:var(--board-height, clamp(420px, 65dvh, 900px));border:1px solid #bfcac3;border-radius:16px;background-color:#e4ebe4;background-image:radial-gradient(#bfcabe 1px,transparent 1px);background-size:15px 15px}.puzzle-stage{position:absolute;inset:0;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none}.board-tools{position:absolute;bottom:10px;right:10px;display:flex;gap:1px;padding:3px;border:1px solid #cad2c9;border-radius:10px;background:#fffef9;box-shadow:0 2px 6px #293e3014}.board-tools button{display:grid;place-items:center;min-width:42px;min-height:40px;padding:2px 8px;color:#213e37;border:0;border-radius:6px;background:transparent;font:600 20px/1 system-ui,sans-serif;cursor:pointer;touch-action:manipulation}.board-tools .board-fit{min-width:70px;margin-left:2px;font-size:13px}.board-tools button:hover{background:#e9efe9}.board-tools button:focus-visible{outline:2px solid #18705b;outline-offset:-2px}@media(max-width:600px){.puzzle-board{height:var(--board-height,clamp(330px,60dvh,680px));border-radius:12px}}:root{font-family:Yu Gothic UI,Hiragino Kaku Gothic ProN,Meiryo,sans-serif;color:#223e39;background:#f7f6f0;font-synthesis:none}*{box-sizing:border-box}header{background:#fffef8;border-bottom:1px solid #dedfd4}.bar,main{max-width:1240px;margin:auto;padding:0 clamp(18px,4vw,65px)}.bar{height:78px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:11px;font:700 27px Georgia,serif;letter-spacing:-1.3px}nav,.buttons,.counts,.gamebar,.heading,.caption{display:flex;align-items:center;gap:9px}button{cursor:pointer;font:inherit;font-size:14px;font-weight:650;color:inherit;border:1px solid #d1d8cb;background:#fffef9;padding:10px 14px;border-radius:8px}button:hover,button:focus-visible{background:#e8eee5}button:disabled{opacity:.55;cursor:default}button:focus-visible{outline:3px solid #b57842;outline-offset:2px}nav button{border:0;background:transparent}nav .active{background:#e6eee5}.intro{margin:clamp(30px,5vw,65px) 0 29px}.intro p{color:#68756c;margin:9px 0;font-size:15px}h1,h2,h3,p{margin:0}h1{font-size:clamp(29px,3.4vw,49px);line-height:1.3;letter-spacing:-.045em}h2{font-size:23px}h3{font-size:15px}.studio{display:grid;grid-template-columns:1.52fr 1fr;gap:24px;align-items:stretch}.print,.setup,article{border:1px solid #d9dfd1;border-radius:16px;background:#fffef8}.print{padding:14px;min-width:0}.mat{background:#e3e3d4;border-radius:8px;overflow:hidden;aspect-ratio:1.5;display:grid;place-items:center}.mat img,.overlay img{width:100%;height:100%;object-fit:contain}.caption{padding:17px 10px 7px;justify-content:space-between}.caption h2{font-size:20px;margin-top:3px;overflow-wrap:anywhere}.caption span,small,.note,footer{color:#65756b;font-size:12px}.caption span{white-space:nowrap;font-variant-numeric:tabular-nums}.setup{padding:clamp(20px,2.5vw,34px);display:flex;flex-direction:column}.setup h3{margin:22px 0 9px}.drop{display:grid;justify-items:center;gap:5px;border:1.5px dashed #9dac9a;background:#f5f7ef;padding:17px}.drop.over{background:#d8e9d4}.upload{color:#235947;font-size:24px;line-height:1.05;border-bottom:2px solid}.counts{gap:6px}.counts button{flex:1;font-size:18px;padding:10px 0}.counts [aria-pressed=true]{background:#e6eee0;border:2px solid #33694e;color:#215840}.primary{background:#17594c;color:#fff;border:0;margin-top:25px;padding:15px 18px}.primary:hover{background:#204c40}.primary span{float:right}.private{text-align:center;margin-top:12px}footer{margin:32px 0 20px;border-top:1px solid #daddd1;padding:17px 0;line-height:1.8}.heading{justify-content:space-between;margin:32px 0 22px;gap:18px}.heading h1{font-size:29px;overflow-wrap:anywhere}.gamebar,.buttons{flex-wrap:wrap}.gamebar{padding-bottom:12px;font-size:14px;gap:15px}.gamebar .buttons{margin-left:auto}.boardwrap{position:relative}.overlay{position:absolute;inset:0;background:#e4ebe4fa;border-radius:15px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px;padding:16px}.overlay img{max-height:80%;min-height:0}.note{margin:12px 0}.list{display:grid;gap:12px}article{display:flex;gap:18px;padding:16px;align-items:center}article img{width:118px;height:85px;object-fit:contain;background:#eef0e8}article h3{overflow-wrap:anywhere}article .buttons{margin-top:8px}.win,[role=alert]{background:#e1eacb;padding:15px;border-radius:8px;margin:15px 0}.win{animation:arrive .65s ease-out}@keyframes arrive{0%{opacity:0;transform:translateY(8px)}}[role=alert]{background:#ffe4cf;display:flex;justify-content:space-between}@media(max-width:740px){.studio{grid-template-columns:1fr}.bar{height:65px}.brand{font-size:21px;gap:5px}.brand svg{width:27px}.bar nav{gap:0}.bar nav button{font-size:12px;padding:8px}.intro{margin:24px 0 18px}.mat{aspect-ratio:1.85}.caption{padding:10px 4px 0}.setup h3{margin-top:15px}.gamebar .buttons{margin:0}.heading{flex-wrap:wrap}.studio{gap:12px}article{align-items:flex-start;flex-wrap:wrap}.buttons button{font-size:13px}.gamebar{gap:8px}.heading h1{font-size:24px}}.home-logo{padding:4px;border:0;background:transparent}.play-area{display:grid;gap:12px;min-width:0}.with-reference{grid-template-columns:minmax(135px,21%) minmax(0,1fr)}.reference{align-self:start;padding:12px;background:#fffef8;border:1px solid #cbcdbf;border-radius:9px;display:grid;gap:8px}.reference img{width:100%;max-height:230px;object-fit:contain}.boardwrap{min-width:0}.puzzle-board{background:#c5b79e;border:7px ridge #a58967;border-radius:9px}.lower-tools{display:flex;justify-content:space-between;align-items:center;gap:14px}.celebration{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;background:#324b3526}.medal{pointer-events:auto;text-align:center;padding:25px 45px;background:#fff9e7;border:3px double #b08c51;border-radius:16px;box-shadow:0 8px 34px #22352f42;animation:bloom .55s ease-out}.medal span{color:#af7529;font-size:25px}.medal h2{font-size:40px}.medal p{margin:6px 0 14px}.gamebar [aria-pressed=true]{background:#d6e5d6}@keyframes bloom{0%{opacity:0;transform:scale(.72)}to{opacity:1;transform:scale(1)}}@media(max-width:740px){.with-reference{grid-template-columns:1fr}.reference{display:flex;align-items:center;gap:14px}.reference img{height:85px;width:auto;max-width:70%}.with-reference .puzzle-board{--board-height:clamp(280px,49dvh,460px)}}@media(prefers-reduced-motion:reduce){.medal,.win{animation:none}}.puzzle-board{border:1px solid #b19b77;background-color:#cfbda0;background-image:repeating-linear-gradient(2deg,#af97720c 0 2px,transparent 2px 9px)}.floating-reference{position:absolute;z-index:2;max-width:calc(100% - 8px);box-sizing:border-box;background:#fffdf5;border:1px solid #a99b81;border-radius:8px;padding:6px;box-shadow:0 4px 14px #3f322636;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}.floating-reference:active{cursor:grabbing}.floating-reference>div{display:flex;align-items:center;gap:3px}.floating-reference strong{font-size:12px;margin-right:auto}.floating-reference button{padding:3px 6px;min-width:26px}.floating-reference canvas{display:block;width:100%;height:auto;max-height:34dvh;object-fit:contain;margin-top:4px}.floating-reference small{font-size:10px}.overlay,.celebration{z-index:3}.save-help{font-size:13px;line-height:1.6;color:#465a50;margin:8px 0}.storage-warning{background:#fff0cf;color:#694013;border:1px solid #d5ad65;border-left:5px solid #a36a1c;border-radius:7px;padding:13px 18px;font-size:14px}.restore-home{margin-top:12px}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:20px;align-items:start}.save-card{display:block;padding:0;min-width:0;box-shadow:0 4px 14px #3145370a}.save-cover{position:relative;background:#e8e5d9;border-radius:15px 15px 0 0;overflow:hidden}.save-cover img{display:block;object-fit:cover;width:100%;height:auto;aspect-ratio:1.95}.save-cover span{position:absolute;bottom:10px;left:12px;background:#fffff2ef;color:#234d3e;border-radius:20px;padding:3px 10px;font-size:12px;font-weight:700}.save-body{padding:17px}.save-body h3{font-size:18px}.save-body p{font-size:13px;color:#58695c;margin:6px 0 18px}.save-body i{margin:0 5px}.save-actions{display:flex;align-items:center;justify-content:space-between}.resume-save{background:#205a4d;color:#fff;min-width:90px}.resume-save:hover,.resume-save:focus-visible{background:#19483e}.save-options{position:relative}.save-options summary{list-style:none;cursor:pointer;padding:10px 14px;border-radius:8px;color:#456454}.save-options summary:hover{background:#e7eee6}.save-options summary::-webkit-details-marker{display:none}.save-options>div{position:absolute;z-index:3;right:0;bottom:100%;display:grid;min-width:180px;padding:5px;background:#fffef8;border:1px solid #d4dace;border-radius:10px;box-shadow:0 7px 20px #223c3029}.save-options button{text-align:left;border:0}.save-options button:last-child{color:#954033}.name-field{display:grid;gap:7px;margin-top:18px;font-weight:700;font-size:15px}.name-field input{border:1px solid #a9b6aa;border-radius:7px;padding:10px 12px;font:inherit;font-weight:400;background:#fffefa;color:#223e39;min-width:0}.card-progress{display:flex;align-items:center;gap:12px;color:#456451;font-size:12px;margin:0 0 16px}.card-progress progress{flex:1;width:40px;height:6px;accent-color:#276c57}.lower-tools{margin-top:14px}.animals{margin-top:32px;scroll-margin:18px}.animals:focus{outline:none}.animal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(160px,44%),1fr));gap:12px;margin:16px 0}.animal-grid button{padding:0;overflow:hidden;text-align:left;background:#fffef8}.animal-grid img{width:100%;display:block;aspect-ratio:1.55;object-fit:cover}.animal-grid strong{display:block;padding:10px 12px}.animals details{font-size:13px;color:#496451}.animals summary{cursor:pointer}.animals li{overflow-wrap:anywhere;margin-bottom:6px}.win button{margin-left:10px}.floating-reference .resize-grip{position:absolute;right:0;bottom:0;width:26px;height:24px;min-width:0;padding:0;border:0;background:#fffdf5;color:#52675a;cursor:nwse-resize;touch-action:none}.floating-reference canvas{max-height:none}.floating-reference{max-width:min(calc(100% - 8px),var(--reference-limit,100%))}
