:root{--cursor: auto;--screen-w: 256px;--screen-h: 192px;--hinge: 24px;--pad: 24px;--controls-h: 72px;--shell-w: calc(var(--screen-w) + var(--pad) * 2);--shell-h: calc(var(--screen-h) * 2 + var(--hinge) + var(--pad) * 2 + var(--controls-h))}*{box-sizing:border-box}*,*:before,*:after{cursor:var(--cursor)}html,body{cursor:var(--cursor);margin:0;height:100%;background:#f6e3ea;color:#eee;font-family:Galmuri9,Galmuri11,ui-monospace,monospace;-webkit-font-smoothing:none;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}#app{height:100%;display:grid;place-items:center;position:relative;z-index:1}.backdrop{position:fixed;inset:0;width:100%;height:100%;z-index:0;image-rendering:pixelated;pointer-events:none}.theme-toggle{position:absolute;top:3px;right:3px;width:14px;height:14px;padding:1px;border:0;background:transparent;cursor:var(--cursor);display:grid;place-items:center}.sound-toggle{position:absolute;top:3px;right:20px;width:14px;height:14px;padding:1px;border:0;background:transparent;cursor:var(--cursor);display:grid;place-items:center}.sound-toggle .icon{grid-area:1 / 1;width:12px;height:12px;image-rendering:pixelated;transition:opacity .18s}.sound-toggle .icon--off,.sound-toggle.is-muted .icon--on{opacity:0}.sound-toggle.is-muted .icon--off{opacity:1}.sound-toggle:hover .icon{filter:brightness(1.15)}.theme-toggle .icon{grid-area:1 / 1;width:12px;height:12px;image-rendering:pixelated;transition:opacity .25s,transform .25s}.theme-toggle .icon--moon{opacity:0;transform:rotate(-40deg) scale(.6)}.theme-toggle.is-night .icon--sun{opacity:0;transform:rotate(40deg) scale(.6)}.theme-toggle.is-night .icon--moon{opacity:1;transform:none}.theme-toggle:hover .icon{filter:brightness(1.15)}.shell{width:var(--shell-w);height:var(--shell-h);transform-origin:center;background:#e9b7c6;border-radius:18px;box-shadow:inset 0 0 0 2px #d99ab0,0 12px 30px #00000073;padding:var(--pad);display:flex;flex-direction:column;gap:0;position:relative;image-rendering:pixelated}.screen{width:var(--screen-w);height:var(--screen-h);background:#000;border:2px solid #c98aa1;width:calc(var(--screen-w) + 4px);height:calc(var(--screen-h) + 4px);margin-left:-2px;position:relative;overflow:hidden}.screen--top canvas{display:block;width:100%;height:100%;image-rendering:pixelated}.hinge{height:var(--hinge);background:#dea3b7}.screen--bottom{background:#fff3f7;color:#3a2a3a;font:9px/1.3 Galmuri9,monospace;padding:4px 5px;display:flex;flex-direction:column;gap:4px;overscroll-behavior:contain}.screen--bottom .bar{display:flex;align-items:center;gap:4px;height:16px;padding:0 2px;border-bottom:2px solid #e6b9c9}.year-badge{background:#d9679f;color:#fff;font:11px/14px Galmuri11,monospace;font-weight:700;padding:0 4px;border-radius:3px}.ganji{color:#8a5a70}.bar-right{margin-left:auto;font:7px Galmuri7,monospace;color:#c493a8;letter-spacing:.5px}.bubble{position:relative;background:#fff;border:2px solid #3a2a3a;border-radius:6px;padding:5px 7px;min-height:26px;display:flex;align-items:center;box-shadow:2px 2px #e6b9c9}.bubble:after{content:"";position:absolute;left:14px;bottom:-6px;width:6px;height:6px;background:#fff;border-right:2px solid #3a2a3a;border-bottom:2px solid #3a2a3a;transform:rotate(45deg)}.bubble-text{font-size:9px}.tiles{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin-top:4px}.tile{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0 3px;background:#ffe3ec;border:2px solid #f0c4d3;border-radius:5px;transition:transform .12s,background .12s}.tile-icon{width:32px;height:32px;image-rendering:pixelated;display:block}.tile-label{font:7px Galmuri7,monospace;color:#7a5a70}.tile.is-near{background:#fff;border-color:#3a2a3a;transform:translateY(-2px);box-shadow:2px 2px #3a2a3a}.tile.is-held{background:#d9679f;border-color:#a63f74}.tile.is-held .tile-label{color:#fff}.tile.is-held .tile-icon{opacity:.9}.screen--bottom.is-browse .bubble,.screen--bottom.is-browse .tiles{display:none}.screen--bottom .browse{display:none;flex:1;min-height:0;gap:5px;margin-top:2px}.screen--bottom.is-browse .browse{display:flex}.pane-left{flex:0 0 40px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:#d9679f;border-radius:6px;color:#fff;box-shadow:inset 0 -3px #a63f74}.pane-icon{width:30px;height:30px;image-rendering:pixelated;display:block}.pane-label{font:9px Galmuri9,monospace;font-weight:700}.pane-right{flex:1;min-width:0;position:relative}.carousel{position:absolute;inset:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;scroll-snap-type:y mandatory;scrollbar-width:none;-webkit-mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent)}.carousel::-webkit-scrollbar{display:none}.carousel[hidden]{display:none}.carousel-track{display:flex;flex-direction:column;row-gap:3px;padding:0 2px}.row{scroll-snap-align:center;display:flex;align-items:center;gap:6px;height:26px;padding:0 5px;background:#ffe9f0;border:2px solid transparent;border-radius:4px;color:#7a5a70;cursor:var(--cursor)}.row.is-focus{background:#fff;border-color:#3a2a3a;color:#3a2a3a;box-shadow:2px 2px #3a2a3a}.carousel-track.is-empty{height:100%;justify-content:center;align-items:center}.list-empty{text-align:center;font:11px/1.3 Galmuri11,monospace;font-weight:700;color:#d9679f;text-shadow:1px 1px 0 #fff}.row .thumb{width:12px;height:16px;flex:0 0 auto;border:1px solid #3a2a3a;object-fit:cover;background:#ffd1e8}.row .thumb--empty{display:grid;place-items:center;font:7px Galmuri7,monospace;color:#d9679f}.row .meta{min-width:0;display:flex;flex-direction:column;gap:1px}.row .t{font:9px/10px Galmuri9,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row .s{display:flex;align-items:center;gap:4px;font:7px Galmuri7,monospace}.row .s .star{width:5px;height:5px}.row .s .stars b{font:7px Galmuri7,monospace}.row .d{color:#b08aa0}.statusline{margin-top:auto;display:flex;align-items:center;gap:6px;padding:3px 4px;background:#ffe3ec;border-radius:4px;color:#5a3a4a}.statusline .keys{margin-left:auto;display:inline-flex;gap:5px;align-items:center;color:#8a5a70}.statusline kbd{font:7px/9px Galmuri7,monospace;color:#fff;background:#3a2a3a;border-radius:2px;padding:0 3px}.hud-year{position:absolute;top:3px;left:4px;font:9px/11px Galmuri9,monospace;color:#fff;text-shadow:1px 0 #3a2a3a,-1px 0 #3a2a3a,0 1px #3a2a3a,0 -1px #3a2a3a;pointer-events:none}.hud-year b{font:11px/11px Galmuri11,monospace;font-weight:700;margin-right:2px}.hud-year.is-night{color:#e8ecff}.controls{height:var(--controls-h);display:flex;align-items:center;justify-content:space-between;padding:8px 4px 0}.dpad{display:grid;grid-template-columns:repeat(3,16px);grid-template-rows:repeat(3,16px)}.dpad button,.buttons button{width:16px;height:16px;padding:0;border:0;border-radius:3px;background:#f3d3dd;color:#a86b82;font:inherit;font-size:7px;box-shadow:0 1px #c98aa1;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.buttons{display:flex;gap:8px}.buttons button{width:20px;height:20px;border-radius:50%}button[data-action].is-down{background:#c9789a;color:#fff;box-shadow:none;transform:translateY(1px)}@media(pointer:coarse){:root{--pad: 12px;--controls-h: 120px}.controls{padding:10px 8px 0}.dpad{grid-template-columns:repeat(3,32px);grid-template-rows:repeat(3,32px);gap:3px}.dpad button{width:32px;height:32px;border-radius:5px;font-size:13px}.buttons{gap:14px}.buttons button{width:44px;height:44px;font-size:14px}}.detail{position:absolute;inset:0;display:grid;place-items:center;padding:8px;font:9px/1.35 Galmuri9,monospace;color:#2b2233}.detail[hidden]{display:none}.card{position:relative;width:100%;height:100%;background:#fff7fa;border:2px solid #2b2233;box-shadow:3px 3px #2b2233;display:grid;grid-template-columns:56px 1fr;gap:8px;padding:8px}.card--empty{grid-template-columns:1fr;place-items:center;align-content:center;gap:5px;background:#fff7fa repeating-linear-gradient(45deg,#ffeef6 0 5px,#fff7fa 5px 10px)}.card--empty .empty-stage{position:relative;display:grid;place-items:center;padding:4px 12px}.card--empty .empty-icon{width:48px;height:48px;image-rendering:pixelated;animation:empty-bob 1.1s ease-in-out infinite}.card--empty .spark{position:absolute;width:3px;height:3px;background:#ffb400;animation:spark 1.6s steps(1,end) infinite}.card--empty .spark--a{top:2px;left:4px}.card--empty .spark--b{top:14px;right:2px;animation-delay:.55s;background:#ff8ac0}.card--empty .spark--c{bottom:6px;left:0;animation-delay:1.1s}.card--empty .empty-title{font:15px/1.2 Galmuri11,monospace;font-weight:700;color:#ff5fa2;text-shadow:1px 0 0 #fff,-1px 0 0 #fff,0 1px 0 #fff,0 -1px 0 #fff,2px 2px 0 #2b2233;animation:empty-pop 1.1s ease-in-out infinite}.card--empty .empty-year{font:8px Galmuri9,monospace;color:#a08ba8}@keyframes empty-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes empty-pop{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes spark{0%,60%,to{opacity:0}20%{opacity:1}}@media(prefers-reduced-motion:reduce){.card--empty .empty-icon,.card--empty .empty-title,.card--empty .spark{animation:none}.card--empty .spark{opacity:1}}.card .cover{width:56px;height:80px;border:2px solid #2b2233;object-fit:cover;background:#ffd1e8}.card .cover--empty{display:grid;place-items:center;font-size:14px;font-weight:700;color:#d9679f;background:repeating-linear-gradient(45deg,#ffd1e8 0 4px,#ffe6f1 4px 8px)}.card .body{display:flex;flex-direction:column;gap:3px;min-width:0}.card .tagline{align-self:flex-start;display:flex;align-items:center;gap:3px}.card .status{align-self:flex-start;padding:0 4px;border:1px solid #2b2233;font:7px/9px Galmuri7,monospace}.card .kind{padding:0 4px;border:1px solid #2b2233;font:7px/9px Galmuri7,monospace;background:#f0e9f5;color:#5c4a6b}.card .kind--drama{background:#ffd9ec;color:#8a3a63}.status--done{background:#b8f0c2}.status--reading{background:#ffe08a}.status--todo{background:#dfe3ff}.status--stop{background:#ff8a94;color:#4a0a12}.card .title{margin:0;font:11px/1.2 Galmuri11,monospace;font-weight:700}.card .period{color:#7a6b80}.card .desc{margin:2px 0 0;color:#3c3346;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}.card .note{margin-top:auto;color:#3f63d6;text-decoration:none}.card .close-hint{position:absolute;right:6px;bottom:4px;font:7px Galmuri7,monospace;color:#a08ba8}.stars{display:inline-flex;align-items:center;gap:1px}.stars b{margin-left:3px;font:9px Galmuri9,monospace;color:#7a6b80}.stars--none{color:#a08ba8}.star{width:7px;height:7px;display:inline-block;background:#e5dce8;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}.star--full{background:#ffb400}.star--half{background:linear-gradient(90deg,#ffb400 50%,#e5dce8 50%)}.rowtags{display:inline-flex;align-items:center;gap:2px}.rowtags i{font-style:normal;padding:0 2px;border:1px solid #d3bfe0;background:#f3ecf8;color:#6b5580;font:7px/8px Galmuri7,monospace}.rowtags b{font:7px Galmuri7,monospace;color:#a08ba8}.row .rowbadge{font-style:normal;padding:0 2px;margin-right:3px;border:1px solid #e0a8c4;background:#ffe6f2;color:#8a3a63;font:7px/8px Galmuri7,monospace}.row .thumb--contain{object-fit:contain;background:none}.card--project{grid-template-columns:1fr;grid-template-rows:auto 1fr}.card--project .cover{width:100%;height:38px;object-fit:contain;background:none}.card--project .cover--empty{height:38px;background:repeating-linear-gradient(45deg,#ffd1e8 0 4px,#ffe6f1 4px 8px)}.card--project .desc{-webkit-line-clamp:3}.card--project .stack{list-style:none;margin:1px 0 2px;padding:0;display:flex;flex-wrap:wrap;gap:2px}.card--project .stack li{padding:0 3px;border:1px solid #b9a7c4;background:#f0e9f5;color:#5c4a6b;font:7px/10px Galmuri7,monospace}.card .links{margin-top:auto;display:flex;gap:3px}.card .links a{border:1px solid #2b2233;text-decoration:none}.card--project .links a{padding:0 4px;background:#dfe3ff;color:#2b2233;font:7px/11px Galmuri7,monospace}.card--project .links a:hover{background:#c3cbff}.card--daily .links a{padding:2px 7px;background:#ffd9ec;color:#8a3a63;box-shadow:2px 2px #2b2233;font:9px/14px Galmuri9,monospace}.card--daily .links a:hover{background:#ffc2e0}.card--daily .links a:active{transform:translate(1px,1px);box-shadow:1px 1px #2b2233}.card--daily .cover{height:56px}.dgrid{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:0;padding:0 1px}.dgrid[hidden]{display:none}.dgrid-head{font:8px Galmuri9,monospace;color:#7a5a70;letter-spacing:.5px;margin-bottom:5px}.dgrid-canvas{image-rendering:pixelated;width:198px;height:79px}.dgrid-legend{display:flex;align-items:center;gap:2px;margin-top:4px;font:7px Galmuri7,monospace;color:#a1798f}.dgrid-legend i{width:6px;height:6px;display:block}.dgrid-legend span:first-child{margin-right:2px}.dgrid-legend span:last-child{margin-left:2px}.card .author{font:9px Galmuri9,monospace;color:#8a5a70;margin:-1px 0 3px}.card--drink .cups{margin:3px 0 5px}.card--drink .dstat{margin-top:6px;padding-top:4px;border-top:1px solid #f0d7e2;font:8px Galmuri9,monospace;color:#a1798f}.card--drink .cups{display:flex;gap:2px;flex-wrap:wrap}.card--drink .cups i{width:5px;height:8px;display:block;background:linear-gradient(#fff8e7 0 2px,#f7d08a 2px 100%);border:1px solid #2b2233}.card--drink .cups i.half{background:linear-gradient(transparent 0 4px,#fff8e7 4px 5px,#f7d08a 5px 100%)}.card .who{list-style:none;margin:1px 0 3px;padding:0;display:flex;flex-wrap:wrap;gap:2px 6px}.card .who li{display:flex;align-items:center;gap:3px;font:9px/13px Galmuri9,monospace;color:#5a3a4a}.card .who img{width:10px;height:9px;image-rendering:pixelated}.card--drink .total{font:9px Galmuri9,monospace;color:#8a5a70;margin-bottom:3px}.card--drink .rounds{list-style:none;margin:0 0 3px;padding:0}.card--drink .rounds li{font:9px/13px Galmuri9,monospace;color:#5a3a4a}.card--drink .rounds b{color:#a81f4d;margin-right:3px}.card--drink{grid-template-columns:1fr}.card--drink .status{background:#f7d08a;color:#5b3d0a}.card--drink .title{font-size:13px}.card--session .status{background:#f7d08a;color:#5b3d0a}.card--session .kind{background:#ffe0b8;color:#6b4a12;border-color:#6b4a12}.card--session .title{font-size:11px}.card--session .desc{-webkit-line-clamp:4}.card--dry .status{background:#d7dde3;color:#46545f}.card--dry .title{color:#46545f}.card--dry .title .zero{font:9px Galmuri9,monospace;color:#8a99a5;border:1px solid #c4ced6;border-radius:3px;padding:0 3px;margin-left:4px;vertical-align:2px}.card--dry .cups--dry i{background:none;border-color:#c4ced6}.card--dry .desc{color:#6b7a86}.shell.is-night .screen--bottom{background:#241c33;color:#e8dcf0}.shell.is-night .screen--bottom .bubble{background:#2f2542;border-color:#4a3a63;color:#e8dcf0}.shell.is-night .screen--bottom .bubble:after{background:#2f2542;border-right-color:#4a3a63;border-bottom-color:#4a3a63}.shell.is-night .tile{background:#33284a;border-color:#4a3a63}.shell.is-night .tile-label{color:#d9c8ea}.shell.is-night .statusline{background:#2f2542;color:#cbbadf;border-top-color:#3d3057}.shell.is-night .statusline .keys{color:#a894c4}.shell.is-night .statusline kbd{background:#56447a}.shell.is-night .bar{border-bottom-color:#3d3057}.shell.is-night .bar-right,.shell.is-night .ganji{color:#9d8ab8}.shell.is-night .row{background:#2f2542;color:#d9c8ea}.shell.is-night .row.is-focus{background:#3f3260;border-color:#7a63a8}.shell.is-night .row .star{background:#4a3a63}.shell.is-night .row .star--full{background:#ffb400}.shell.is-night .row .star--half{background:linear-gradient(90deg,#ffb400 50%,#4a3a63 50%)}.shell.is-night .dgrid-head{color:#c3b0da}.shell.is-night .dgrid-legend{color:#9d8ab8}.shell.is-night .card--dry .status{background:#3a4550;color:#cdd8e0}.shell.is-night .list-empty{color:#ffa8d0;text-shadow:1px 1px 0 #241c33}.shell.is-night .row .rowbadge{background:#4a2f42;border-color:#7a4f68;color:#f0c4da}.shell.is-night .card--project .stack li{background:#3b3350;border-color:#5a4d75;color:#cbbadf}.shell.is-night .card--project .links a{background:#4a4270;border-color:#1b1526;color:#e8e0f5}.shell.is-night .card--project .links a:hover{background:#5d5390}@font-face{font-family:Galmuri11;font-weight:400;src:url(/assets/Galmuri11-DfQIlyDK.woff2) format("woff2");font-display:block}@font-face{font-family:Galmuri11;font-weight:700;src:url(/assets/Galmuri11-Bold-QdFGsJ3v.woff2) format("woff2");font-display:block}@font-face{font-family:Galmuri9;font-weight:400;src:url(/assets/Galmuri9-B9HMP827.woff2) format("woff2");font-display:block}@font-face{font-family:Galmuri7;font-weight:400;src:url(/assets/Galmuri7-DZrunm1m.woff2) format("woff2");font-display:block}
