:root{--washi:#ede7de;--rice-paper:#fbf8f2;--sumi-ink:#1f1a14;--mist:#8c857a;--hanko:#c8392b;--hanko-dark:#b8322a;--sakura:#f2b5cc;--tatami:#ddd6cb;--matcha:#7a9b5c;--shadow-card:0 1px 2px #1f1a140a, 0 8px 24px #785f3c14, 0 24px 48px #785f3c0f;--shadow-popover:0 2px 4px #1f1a140d, 0 12px 32px #785f3c1f, 0 32px 64px #785f3c14;--shadow-modal:0 4px 8px #1f1a140f, 0 24px 60px #785f3c24, 0 48px 96px #785f3c1a;--shadow-soft:0 1px 2px #1f1a140a, 0 6px 16px #785f3c14;--border-hairline:1px solid #1f1a140a;--focus-ring:0 0 0 3px #c8392b4d;--ease-settle:cubic-bezier(.2, .8, .2, 1);--ease-overshoot:cubic-bezier(.2, .8, .25, 1.1);--ease-out-soft:cubic-bezier(.4, 0, .2, 1);--ease-in-soft:cubic-bezier(.4, 0, 1, 1);--font-serif:"Recia", "Noto Serif JP", Georgia, serif;--font-sans:"General Sans", system-ui, -apple-system, sans-serif;--font-mono:"IBM Plex Mono", "SF Mono", Monaco, monospace;--z-canvas:0;--z-paper-grain:1;--z-canvas-overlay:2;--z-chrome:10;--z-popover:20;--z-modal-backdrop:30;--z-modal:31;--z-toast:40}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--washi);width:100%;height:100%;color:var(--sumi-ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px;line-height:1.5;overflow:hidden}body{-webkit-user-select:none;user-select:none}#root{width:100%;height:100%;position:relative}button,input,select{font-family:inherit;font-size:inherit;color:inherit;background:0 0;border:none;outline:none}button{cursor:pointer}input{-webkit-user-select:text;user-select:text}.card{background:var(--rice-paper);border:var(--border-hairline);box-shadow:var(--shadow-card);border-radius:16px}.card-popover{background:var(--rice-paper);border:var(--border-hairline);box-shadow:var(--shadow-popover);border-radius:12px}.t-title{font-family:var(--font-serif);letter-spacing:-.01em;color:var(--sumi-ink);font-size:18px;font-weight:600;line-height:1.1}.t-subtitle{font-family:var(--font-sans);color:var(--mist);font-size:12px;font-weight:400;line-height:1.3}.t-tool-label{font-family:var(--font-sans);letter-spacing:.01em;font-size:11px;font-weight:500;line-height:1}.t-category-tab{font-family:var(--font-sans);letter-spacing:.14em;text-transform:uppercase;font-size:10px;font-weight:600}.t-body{font-family:var(--font-sans);font-size:13px;font-weight:400;line-height:1.5}.t-numeric{font-family:var(--font-mono);font-size:13px;font-weight:400}.app-root{background:var(--washi);width:100%;height:100%;position:relative}.canvas-layer{z-index:var(--z-canvas);position:absolute;inset:0}.paper-grain{pointer-events:none;mix-blend-mode:multiply;opacity:.06;width:100%;height:100%;z-index:var(--z-paper-grain);position:fixed;inset:0}.chrome-layer{pointer-events:none;z-index:var(--z-chrome);position:absolute;inset:0}.chrome-layer>*{pointer-events:auto}.chrome-layer.chrome-cinematic-hidden>*{opacity:0!important;pointer-events:none!important;transition:opacity .45s cubic-bezier(.2,.8,.2,1),transform .45s cubic-bezier(.2,.8,.2,1)!important}.chrome-layer:not(.chrome-cinematic-hidden)>*{transition:opacity .4s cubic-bezier(.2,.8,.2,1)}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{box-shadow:var(--focus-ring);border-radius:8px}.phone-fallback{background:var(--washi);z-index:100;justify-content:center;align-items:center;padding:32px;display:flex;position:fixed;inset:0}.phone-fallback-inner{text-align:center;max-width:320px;animation:6s ease-in-out infinite float-gentle}.phone-fallback h1{font-family:var(--font-serif);letter-spacing:-.01em;color:var(--sumi-ink);margin-bottom:12px;font-size:22px;font-weight:500}.phone-fallback p{font-family:var(--font-sans);color:#1f1a14b3;font-size:13px;line-height:1.55}.phone-fallback .hanko-mark{background:var(--hanko);width:32px;height:32px;font-family:var(--font-serif);color:var(--rice-paper);border-radius:4px;justify-content:center;align-items:center;margin-bottom:18px;font-size:18px;font-weight:600;animation:6s ease-in-out infinite hanko-pulse;display:inline-flex;box-shadow:inset 0 0 0 1.5px #ffffff2e}.phone-fallback-illustration{filter:drop-shadow(0 8px 16px #785f3c26);margin-bottom:24px;font-size:64px;line-height:1}@keyframes float-gentle{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes hanko-pulse{0%,to{opacity:1}50%{opacity:.85}}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:1.5px solid;border-top-color:#0000;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}.chrome-layer button,.chrome-layer .card{-webkit-user-select:none;user-select:none}
