:root{--paper:#fff8ee;--card:#fffdf8;--field:#fff;--peach:#ffd9b8;--peach-deep:#f2a65a;--accent:#f2a65a;--accent-ink:#8f4508;--ink:#3a2f2a;--muted:#7a6a60;--ink-2:#8a4a7a;--line:#f0d3b0;--field-line:#bf8650;--destructive:#b3261e;--destructive-tint:#fce4e1;--ok:#3f7a3a;--scrim:#3a2f2a66;--tint-butter:#fff0bf;--tint-mint:#ddf0d8;--tint-pink:#ffdde0;--tint-peach:#ffe6cf;--tint-lavender:#e6def7;--deep-butter:#f0c54e;--deep-mint:#8cc98a;--deep-pink:#f0a0aa;--deep-peach:#f2a65a;--deep-lavender:#b7a3e3;--radius:16px;--shadow:0 4px 14px #3a2f2a1f;--shadow-dialog:0 8px 28px #3a2f2a33;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:64px;--text-label:14px;--text-body:18px;--text-heading:22px;--text-display:32px;--font-body:"Zen Maru Gothic", "M PLUS Rounded 1c", "Hiragino Maru Gothic ProN", "Hiragino Sans", "Yu Gothic", system-ui, sans-serif;--font-display:"Mochiy Pop One", var(--font-body)}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--text-body);margin:0}.app-shell{min-height:100dvh}.page{gap:var(--space-md);max-width:1100px;padding:var(--space-md) calc(var(--space-md) + env(safe-area-inset-right)) calc(var(--space-2xl) + env(safe-area-inset-bottom)) calc(var(--space-md) + env(safe-area-inset-left));margin:0 auto;display:grid}.page:after{content:"";height:50dvh;display:block}h1{font-family:var(--font-body);font-size:var(--text-heading);margin:0;font-weight:700}h2{font-size:var(--text-heading);margin:0}.muted{margin:var(--space-xs) 0 0;color:var(--muted)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:3px solid var(--accent-ink);outline-offset:2px}.card{gap:var(--space-md);background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-md);display:grid}.btn{justify-content:center;align-items:center;gap:var(--space-sm);min-width:48px;min-height:48px;padding:0 var(--space-lg);background:var(--peach);color:var(--ink);font:inherit;font-size:var(--text-body);border:0;border-radius:24px;font-weight:700;display:inline-flex}.btn--primary{background:var(--accent);color:var(--ink)}.btn--destructive{background:var(--destructive);color:#fff}.btn--text{min-height:44px;color:var(--accent-ink);background:0 0}.btn--icon{background:0 0;width:48px;padding:0}.btn--icon:active{background:var(--peach)}@media (prefers-reduced-motion:no-preference){button{transition:background-color .1s,transform .1s}button:active{filter:brightness(.92)}.btn--icon:active{transform:scale(.97)}}.field{width:100%;min-height:48px;padding:var(--space-sm) var(--space-md);border:2px solid var(--field-line);background:var(--field);color:var(--ink);font:inherit;font-size:var(--text-body);border-radius:12px;display:block}.field-label{font-size:var(--text-label);color:var(--muted);font-weight:700;display:block}.chip{align-items:center;gap:var(--space-xs);min-height:32px;padding:0 var(--space-sm);background:var(--peach);color:var(--ink);font-size:var(--text-label);border-radius:16px;font-weight:700;display:inline-flex}.button-row{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.top-bar{z-index:10;align-items:center;gap:var(--space-sm);height:calc(56px + env(safe-area-inset-top));padding:env(safe-area-inset-top) calc(var(--space-md) + env(safe-area-inset-right)) 0 calc(var(--space-md) + env(safe-area-inset-left));background:var(--paper);border-bottom:2px solid var(--line);display:flex;position:sticky;top:0}.tab{justify-content:center;align-items:center;gap:var(--space-sm);min-width:120px;height:48px;padding:0 var(--space-md);color:var(--ink);font:inherit;font-size:var(--text-body);background:0 0;border:0;border-radius:24px;font-weight:700;display:inline-flex}.tab--active{background:var(--accent)}.save-indicator-root{margin-left:auto}.save-indicator{align-items:center;gap:var(--space-xs);min-height:48px;color:var(--muted);font:inherit;font-size:var(--text-label);background:0 0;border:0;padding:0;display:inline-flex}.save-indicator--saved svg{color:var(--ok)}.save-indicator--failed{min-width:48px;color:var(--destructive);font-weight:700}@media (width<=700px){.save-indicator__text{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}}.toast{top:calc(56px + var(--space-md) + env(safe-area-inset-top));z-index:30;align-items:center;gap:var(--space-sm);width:max-content;max-width:min(480px, calc(100vw - 2 * var(--space-md)));padding:var(--space-sm) var(--space-md);border:2px solid var(--line);background:var(--peach);box-shadow:var(--shadow);font-size:var(--text-body);border-radius:24px;display:flex;position:fixed;left:50%;transform:translate(-50%)}@media (prefers-reduced-motion:no-preference){.toast{animation:.15s ease-out toast-in}}@keyframes toast-in{0%{opacity:0}to{opacity:1}}.ink-canvas{aspect-ratio:3/2;background:var(--field);border:2px dashed var(--peach-deep);border-radius:var(--radius);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;width:100%;max-width:1200px;display:block}.ink-canvas--scroll{touch-action:pan-x pan-y}.ink-canvas--lock{touch-action:none}.note-label{margin-bottom:var(--space-sm);font-weight:600;display:block}.note-field{border:2px solid var(--peach);border-radius:var(--radius);background:var(--field);width:100%;color:var(--ink);font:inherit;font-size:var(--text-body);resize:vertical;padding:12px;display:block}.update-banner{margin:var(--space-sm) var(--space-md) 0;padding:var(--space-sm) 14px;border-radius:var(--radius);background:var(--peach)}.error-text{margin:var(--space-sm) 0 0;color:var(--destructive)}.diagnostics-list{gap:var(--space-sm) var(--space-lg);grid-template-columns:1fr 1fr;margin:12px 0 0;display:grid}.diagnostics-row{gap:2px;min-width:0;display:grid}.diagnostics-row dt{color:var(--muted);font-size:var(--text-label)}.diagnostics-row dd{overflow-wrap:anywhere;margin:0}@media (width<=700px){.diagnostics-list{grid-template-columns:1fr}}.save-failure-banner{justify-content:space-between;align-items:center;gap:var(--space-md);margin:var(--space-sm) var(--space-md) 0;padding:var(--space-md);border:2px solid var(--destructive);background:var(--destructive-tint);border-radius:16px;flex-wrap:wrap;display:flex}.save-failure-banner__message{align-items:center;gap:var(--space-sm);color:var(--destructive);display:flex}.save-failure-banner__message p{color:var(--ink);margin:0}.save-failure-banner__actions{gap:var(--space-sm);flex-wrap:wrap;display:flex}.today-screen{gap:var(--space-md);display:grid}.page-view{display:block}.offer,.notice{width:100%;max-width:560px;margin:var(--space-3xl) auto 0;padding:var(--space-lg);text-align:center;justify-items:center}.notice--wide{max-width:none}.offer__badge{background:var(--tint-butter);width:64px;height:64px;color:var(--ink);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.offer__badge--alert{background:var(--destructive-tint);color:var(--destructive)}.offer__heading{font-family:var(--font-body);font-size:var(--text-heading);margin:0;font-weight:700}.offer__body{margin:0}.notice__detail{color:var(--muted);font-size:var(--text-label);overflow-wrap:anywhere;margin:0}.react-grid-layout{transition:height .2s;position:relative}.react-grid-item{transition:left .2s,top .2s,width .2s,height .2s}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{z-index:1;will-change:width, height;transition:none}.react-grid-item.react-draggable-dragging{z-index:3;will-change:transform;transition:none}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{opacity:.2;z-index:2;-webkit-user-select:none;user-select:none;background:red;transition-duration:.1s}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{opacity:0;width:20px;height:20px;position:absolute}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";border-bottom:2px solid #0006;border-right:2px solid #0006;width:5px;height:5px;position:absolute;bottom:3px;right:3px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-grid-layout,.react-grid-item{transition:none!important}.module-grid-wrap{position:relative}.module-grid--hidden{visibility:hidden;pointer-events:none;position:absolute;top:0;left:0;right:0}.module-slot{height:auto;padding-bottom:16px}.loading-skeleton{gap:var(--space-md);display:grid}.loading-skeleton__label{color:var(--muted);font-size:var(--text-label);margin:0}.skeleton{border-radius:var(--radius);height:120px}.skeleton--butter{background:var(--tint-butter)}.skeleton--mint{background:var(--tint-mint)}.skeleton--pink{background:var(--tint-pink)}@media (prefers-reduced-motion:no-preference){.skeleton{animation:1.2s ease-in-out infinite skeleton-pulse}}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.6}}.module-card{background:var(--card);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);height:auto;overflow:hidden;container-type:inline-size}.module-card__band{align-items:center;gap:var(--space-sm);height:56px;padding:0 var(--space-md);display:flex}.module-card__chip{width:32px;height:32px;color:var(--ink);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.module-card__kana{font-size:var(--text-body);font-weight:700;line-height:1}.module-card__title{min-width:0;color:var(--ink);font-size:var(--text-heading);text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;font-weight:700;overflow:hidden}.module-card__title-row{align-items:center;gap:var(--space-sm);display:flex}.module-card__body{gap:var(--space-md);padding:var(--space-md);display:grid}.header-row{gap:var(--space-md);flex-wrap:wrap;align-items:center;display:flex}.header-date{gap:var(--space-xs);margin-right:var(--space-md);display:grid}.header-date__ja{font-family:var(--font-display);font-size:var(--text-display);font-synthesis:none;font-weight:400;line-height:1.2}.header-date__long{color:var(--muted);font-size:var(--text-label);line-height:1.4}.header-field{gap:var(--space-xs);display:grid}.header-field--lesson{width:220px}.header-field--minutes{width:120px}.header-minutes{position:relative}.header-minutes__input{padding-right:48px}.header-minutes__unit{top:50%;right:var(--space-md);color:var(--muted);font-size:var(--text-label);pointer-events:none;position:absolute;transform:translateY(-50%)}.module-field{gap:var(--space-xs);display:grid}.autogrow{min-height:calc(var(--rows,3) * 1.5 * var(--text-body) + 2 * var(--space-sm) + 4px);resize:none;line-height:1.5;overflow:hidden}.autogrow--native{field-sizing:content}.grade{align-items:center;gap:var(--space-sm) var(--space-md);flex-wrap:wrap;display:flex}.grade__stars{gap:var(--space-sm);display:flex}.grade__star{background:0 0;border:0;border-radius:24px;justify-content:center;align-items:center;width:48px;height:48px;padding:0;display:inline-flex}.grade__caption{color:var(--muted);font-size:var(--text-label);line-height:1.4}.header-timer{align-items:center;gap:var(--space-sm);margin-top:22px;display:flex}.header-timer__display{font-family:var(--font-display);font-size:var(--text-display);font-synthesis:none;font-variant-numeric:tabular-nums;font-weight:400;line-height:1.2}.header-timer__dot{background:var(--accent);border-radius:50%;flex:none;width:12px;height:12px}@media (prefers-reduced-motion:no-preference){.header-timer__dot{animation:1.4s ease-in-out infinite timer-pulse}}@keyframes timer-pulse{0%,to{opacity:1}50%{opacity:.35}}.header-stale{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--peach);border-radius:12px;flex-wrap:wrap;display:flex}.header-stale p{margin:0}.header-stale__actions{gap:var(--space-sm);flex-wrap:wrap;display:flex}.header-stale .btn{background:var(--card)}.dialog-scrim{z-index:40;padding:var(--space-md);background:var(--scrim);place-items:center;display:grid;position:fixed;inset:0}.dialog-card{gap:var(--space-md);width:100%;max-width:480px;max-height:calc(100dvh - 2 * var(--space-md));padding:var(--space-lg);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-dialog);display:grid;overflow-y:auto}.dialog-card__title{margin:0}.dialog-card__body{gap:var(--space-sm);display:grid}.dialog-card__body p{margin:0}.dialog-card__warning{color:var(--destructive);font-weight:700}.dialog-card__actions{gap:var(--space-sm);justify-content:space-between;display:flex}.dialog-card__actions .btn{flex:1}@media (width<=419px){.dialog-card__actions{flex-direction:column}}.backup-card__lead{margin:0}.backup-card__status{align-items:center;gap:var(--space-sm);margin:0;font-weight:700;display:flex}.backup-card__icon{flex:none;display:inline-flex}.backup-card__icon--ok{color:var(--ok)}.backup-card__icon--warn{color:var(--accent-ink)}.backup-card__icon--error{color:var(--destructive)}.backup-card__row{gap:var(--space-sm);flex-wrap:wrap;display:flex}.backup-box{gap:var(--space-sm);padding:var(--space-md);border:2px solid var(--line);background:var(--card);border-radius:12px;display:grid}.backup-box p{margin:0}.backup-box__row{align-items:flex-start;gap:var(--space-sm);display:flex}.backup-box__hint{color:var(--muted)}.backup-box__actions{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.backup-extra{justify-items:start;gap:var(--space-xs);display:grid}.backup-caption{color:var(--muted);font-size:var(--text-label);margin:0}.backup-result{align-items:flex-start;gap:var(--space-sm);margin:0;display:flex}.backup-result--neutral{color:var(--ink)}.backup-result--error{color:var(--destructive);font-weight:700}.backup-spinner{border:3px solid var(--ink);border-top-color:#0000;border-radius:50%;width:18px;height:18px}@media (prefers-reduced-motion:no-preference){.backup-spinner{animation:.9s linear infinite backup-spin}}@keyframes backup-spin{to{transform:rotate(360deg)}}.backup-card .btn:disabled{opacity:.5}.erase-card{border:2px solid var(--destructive)}.erase-card__lead{margin:0}.backup-test{justify-items:start;display:grid}.backup-test__body{gap:var(--space-sm);padding:var(--space-sm) 0 0 var(--space-md);font-size:var(--text-label);display:grid}.backup-test__row{align-items:center;gap:var(--space-sm);min-height:44px;display:flex}.backup-test__row input[type=checkbox]{width:28px;height:28px}.backup-test__days{width:96px}@font-face{font-family:Zen Maru Gothic;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/zen-maru-gothic-400-joyo-DH5pOBx8.woff2)format("woff2")}@font-face{font-family:Zen Maru Gothic;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/zen-maru-gothic-700-joyo-DqkUnLnS.woff2)format("woff2")}@font-face{font-family:Mochiy Pop One;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/mochiy-pop-one-n5n3-DhIJWONO.woff2)format("woff2")}@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/mplus-rounded-1c-400-latinexta-C5j8_vvq.woff2)format("woff2");unicode-range:U+100-17F}@font-face{font-family:"M PLUS Rounded 1c";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/mplus-rounded-1c-700-latinexta-CBQV_QDo.woff2)format("woff2");unicode-range:U+100-17F}
