:root{--fur:#F2D04B;--sleeve:#5B3F7A;--ink:#141218;--sky:#9fc9ea;--snow:#fffdf6;--ice:#8FD3F4}
*{box-sizing:border-box}
body{margin:0;font-family:'JetBrains Mono',monospace;color:var(--ink);
background:linear-gradient(180deg,#7fb6e3 0%,#cfe6f6 45%,#f6f1e2 100%) fixed;min-height:100vh}
body::before{content:"";position:fixed;inset:0;pointer-events:none;
background:radial-gradient(ellipse 40% 12% at 20% 18%,#fff9 0,transparent 70%),radial-gradient(ellipse 30% 10% at 75% 10%,#fffa 0,transparent 70%);z-index:0}
#root{position:relative;z-index:1}
.disp{font-family:'Shippori Mincho B1',serif}
.ink{border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);background:var(--snow)}
.blade{clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%);border:none;padding:.45rem 1rem;font-weight:800;cursor:pointer;transition:transform .15s,filter .15s}
.blade:hover{transform:translateY(-2px);filter:brightness(1.08)}
.blade:active{transform:translateY(1px)}
.b-fur{background:var(--fur);color:var(--ink)}
.b-sleeve{background:var(--sleeve);color:#fff}
.b-ink{background:var(--ink);color:var(--fur)}
.rise{animation:rise .6s cubic-bezier(.2,.8,.2,1) both}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.tomoe{animation:spin 9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
input,textarea,select{font-family:inherit;border:1.5px solid var(--ink);background:#fff;padding:.35rem .5rem;width:100%;font-size:.8rem}
input[type=range]{accent-color:var(--sleeve);border:none;padding:0}
input[type=checkbox]{width:auto;accent-color:var(--sleeve)}
.shimmer{background:repeating-linear-gradient(45deg,#f2d04b33 0 10px,#5b3f7a22 10px 20px);background-size:200% 200%;animation:sh 1.2s linear infinite}
@keyframes sh{to{background-position:100% 0}}
.dragover{outline:3px dashed var(--sleeve);outline-offset:3px}
@media print{header,aside,footer,.noprint{display:none!important}.ink{box-shadow:none}body{background:#fff}}