:root{--bg: oklch(.985 .006 80);--bg-warm: oklch(.97 .012 70);--ink: oklch(.22 .015 60);--ink-soft: oklch(.42 .012 60);--ink-faint: oklch(.62 .01 60);--line: oklch(.89 .01 70);--line-soft: oklch(.93 .008 70);--card: oklch(1 0 0);--accent: oklch(.62 .13 40);--accent-ink:oklch(.38 .11 38);--accent-wash:oklch(.96 .025 50);--leaf: oklch(.55 .08 145);--gold: oklch(.72 .12 85);--rose: oklch(.78 .09 25);--shadow: 0 1px 0 oklch(.9 .01 70 / .6), 0 12px 30px -18px oklch(.3 .05 60 / .18);--radius: 14px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Inter,sans-serif;font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased}body{min-height:100vh;background-image:radial-gradient(at 8% 4%,oklch(.96 .03 50 / .5),transparent 40%),radial-gradient(at 96% 92%,oklch(.95 .025 140 / .45),transparent 45%)}.serif{font-family:"Instrument Serif",serif;font-weight:400;letter-spacing:-.01em}.mono{font-family:JetBrains Mono,monospace}.ital{font-style:italic}button{font-family:inherit;border:0;background:none;color:inherit;cursor:pointer}input,textarea,select{font-family:inherit;color:inherit}a{color:inherit}.top{position:sticky;top:0;z-index:30;-webkit-backdrop-filter:blur(14px) saturate(1.05);backdrop-filter:blur(14px) saturate(1.05);background:#fcfaf6c7;border-bottom:1px solid var(--line)}.top-inner{max-width:1280px;margin:0 auto;padding:14px 28px;display:flex;align-items:center;gap:18px}.brand{display:flex;align-items:center;gap:10px;cursor:pointer}.brand-mark{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,var(--accent) 0%,var(--gold) 100%);display:grid;place-items:center;color:#fff;font-weight:700;font-size:13px;box-shadow:inset 0 -2px #7331194d}.brand-name{font-size:15px;font-weight:600;letter-spacing:-.01em}.brand-name em{font-family:"Instrument Serif",serif;font-style:italic;font-weight:400;color:var(--accent-ink)}.crumbs{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-soft)}.crumbs .sep{opacity:.4}.top-spacer{flex:1}.top-search{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:7px 12px;width:280px;font-size:13px;color:var(--ink-soft)}.top-search input{border:0;outline:0;background:none;flex:1;font-size:13px}.kbd{font-family:JetBrains Mono,monospace;font-size:11px;padding:2px 6px;border:1px solid var(--line);border-radius:5px;color:var(--ink-faint);background:var(--bg-warm)}.avatar{width:34px;height:34px;border-radius:50%;background:#fedbd5;color:var(--accent-ink);display:grid;place-items:center;font-weight:600;font-size:13px;border:1px solid var(--line);cursor:pointer}.screen-login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-art{position:relative;overflow:hidden;background:radial-gradient(at 30% 20%,oklch(.94 .04 50 / .9),transparent 55%),radial-gradient(at 80% 80%,oklch(.92 .05 30 / .7),transparent 55%),var(--bg-warm);border-right:1px solid var(--line);padding:40px;display:flex;flex-direction:column;justify-content:space-between}.login-art .grid-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--line-soft) 1px,transparent 1px);background-size:32px 32px;-webkit-mask-image:radial-gradient(at 50% 50%,black,transparent 75%);mask-image:radial-gradient(at 50% 50%,black,transparent 75%);opacity:.5}.login-art-top{position:relative;display:flex;align-items:center;gap:10px}.login-quote{position:relative;max-width:480px;margin-bottom:20px}.login-quote .q{font-family:"Instrument Serif",serif;font-size:54px;line-height:1.05;letter-spacing:-.02em;color:var(--ink)}.login-quote .q em{font-style:italic;color:var(--accent-ink)}.login-quote .meta{margin-top:22px;font-size:13px;color:var(--ink-soft);display:flex;gap:14px;align-items:center}.login-quote .meta .dot{width:5px;height:5px;border-radius:50%;background:var(--accent)}.login-stamp{position:absolute;right:48px;top:48px;width:130px;height:130px;border-radius:50%;border:1px dashed oklch(.55 .08 40 / .5);display:grid;place-items:center;color:var(--accent-ink);transform:rotate(-8deg)}.login-stamp .inner{text-align:center;font-family:"Instrument Serif",serif;font-style:italic;font-size:18px;line-height:1.1}.login-stamp .inner small{display:block;font-family:JetBrains Mono,monospace;font-style:normal;font-size:9px;letter-spacing:.15em;margin-top:6px;color:#9a614d}.login-form-wrap{display:flex;align-items:center;justify-content:center;padding:40px}.login-form{width:100%;max-width:380px}.login-form h1{font-family:"Instrument Serif",serif;font-size:42px;font-weight:400;margin:0 0 6px;letter-spacing:-.02em;line-height:1}.login-form h1 em{font-style:italic;color:var(--accent-ink)}.login-form .sub{font-size:14px;color:var(--ink-soft);margin-bottom:32px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:var(--ink-soft);margin-bottom:6px;letter-spacing:.02em}.input{width:100%;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:14px;outline:none;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #c668461f}.row{display:flex;align-items:center;justify-content:space-between;margin:14px 0 22px;font-size:13px;color:var(--ink-soft)}.check{display:flex;gap:8px;align-items:center;cursor:pointer}.check input{accent-color:var(--accent)}.btn-primary{width:100%;padding:13px;border-radius:10px;background:var(--ink);color:var(--bg);font-weight:500;font-size:14px;letter-spacing:.01em;transition:transform .08s ease,background .15s}.btn-primary:hover{background:var(--accent-ink)}.btn-primary:active{transform:translateY(1px)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.login-foot{margin-top:28px;font-size:12px;color:var(--ink-faint);text-align:center}.login-foot .heart{color:var(--accent)}.page{max-width:1280px;margin:0 auto;padding:36px 28px 80px}.hello{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:32px}.hello h2{font-family:"Instrument Serif",serif;font-weight:400;font-size:46px;letter-spacing:-.02em;margin:0;line-height:1.08}.hello h2 em{font-style:italic;color:var(--accent-ink)}.hello .when{font-size:13px;color:var(--ink-soft);margin-top:18px}.hello-side{display:flex;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:12.5px;color:var(--ink-soft);align-items:center}.hello-side .pill{background:var(--accent-wash);color:var(--accent-ink);padding:3px 8px;border-radius:6px;font-weight:500}.section-label{display:flex;align-items:center;gap:14px;margin:30px 0 14px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);font-family:JetBrains Mono,monospace}.section-label .line{flex:1;height:1px;background:var(--line)}.section-label .count{color:var(--ink-soft)}.apps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.app{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px 22px 20px;cursor:pointer;display:flex;flex-direction:column;gap:14px;transition:transform .15s ease,border-color .15s,box-shadow .15s;position:relative;overflow:hidden;min-height:200px}.app:hover{transform:translateY(-2px);border-color:#d0b198;box-shadow:var(--shadow)}.app .icon{width:46px;height:46px;border-radius:11px;display:grid;place-items:center;background:var(--bg-warm);border:1px solid var(--line)}.app .icon svg{width:22px;height:22px;stroke:var(--ink);stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round}.app h3{margin:0;font-size:16px;font-weight:600;letter-spacing:-.01em}.app p{margin:0;font-size:13px;color:var(--ink-soft);line-height:1.45}.app .foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;padding-top:14px;border-top:1px dashed var(--line);font-size:11px;color:var(--ink-faint);font-family:JetBrains Mono,monospace;letter-spacing:.05em}.badge{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:3px 7px;border-radius:5px}.badge.new{background:#d7f5d7;color:#245427}.badge.ext{background:#d9efff;background:oklch(.94 .04 240);color:#034d73}.badge.soon{background:#eae7e4;color:var(--ink-faint)}.app[data-tone=leaf] .icon{background:#e2f9e2;color:#1d5522}.app[data-tone=leaf] .icon svg{stroke:#1d5522}.app[data-tone=sky] .icon{background:#e6f4ff;background:oklch(.96 .04 240);color:#004d74;color:oklch(.4 .1 240)}.app[data-tone=sky] .icon svg{stroke:#004d74;stroke:oklch(.4 .1 240)}.app[data-tone=rose] .icon{background:#ffece9;background:oklch(.96 .05 25);color:var(--accent-ink)}.app[data-tone=rose] .icon svg{stroke:var(--accent-ink)}.app[data-tone=gold] .icon{background:#fff0d2;background:oklch(.96 .05 85);color:#6d5000;color:oklch(.45 .1 85)}.app[data-tone=gold] .icon svg{stroke:#6d5000;stroke:oklch(.45 .1 85)}.app[data-tone=violet] .icon{background:#eeecff;background:oklch(.95 .04 290);color:#4d427f}.app[data-tone=violet] .icon svg{stroke:#4d427f}.app.placeholder{background:transparent;border:1px dashed var(--line);color:var(--ink-faint);align-items:center;justify-content:center;text-align:center}.app.placeholder:hover{transform:none;box-shadow:none;border-color:var(--ink-faint)}.app.placeholder .plus{font-family:"Instrument Serif",serif;font-size:36px;color:var(--ink-faint);line-height:1}.app.placeholder small{font-size:12px;color:var(--ink-faint);margin-top:6px;display:block}.quick{margin-top:30px;display:grid;grid-template-columns:2fr 1fr;gap:18px}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px}.panel h4{margin:0 0 4px;font-size:14px;font-weight:600;letter-spacing:-.01em}.panel .sub{font-size:12.5px;color:var(--ink-soft);margin-bottom:16px}.recents{display:flex;flex-direction:column}.recent{display:flex;align-items:center;gap:14px;padding:11px 0;border-top:1px solid var(--line-soft);font-size:13px}.recent:first-child{border-top:0}.recent .dot{width:6px;height:6px;border-radius:50%;background:var(--leaf)}.recent .what{flex:1}.recent .when{color:var(--ink-faint);font-family:JetBrains Mono,monospace;font-size:11px}.stat{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line-soft);font-size:13px}.stat:first-of-type{border-top:0}.stat .v{font-family:"Instrument Serif",serif;font-size:20px;color:var(--ink);font-style:italic}.tool-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:28px}.tool-head .title{font-family:"Instrument Serif",serif;font-size:44px;font-weight:400;letter-spacing:-.02em;line-height:1.05;margin:0}.tool-head .title em{font-style:italic;color:var(--accent-ink)}.tool-head .desc{font-size:14px;color:var(--ink-soft);margin-top:8px;max-width:560px;line-height:1.5}.back{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-soft);padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--card)}.back:hover{color:var(--ink);border-color:var(--ink-soft)}.sanit-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.pane{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden}.pane-head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;background:linear-gradient(to bottom,var(--bg-warm),transparent)}.pane-head h5{margin:0;font-size:13px;font-weight:600;letter-spacing:-.005em;display:flex;align-items:center;gap:8px}.pane-head .tag{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-faint)}.pane-actions{display:flex;gap:6px}.icon-btn{width:30px;height:30px;border-radius:7px;display:grid;place-items:center;border:1px solid var(--line);background:var(--card);color:var(--ink-soft)}.icon-btn:hover{color:var(--ink);border-color:var(--ink-soft)}.icon-btn svg{width:14px;height:14px;stroke:currentColor;stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round}.pane textarea{flex:1;border:0;outline:0;resize:none;padding:20px;font-size:14.5px;line-height:1.65;background:transparent;color:var(--ink);min-height:340px;font-family:Inter,sans-serif}.pane textarea::placeholder{color:var(--ink-faint)}.out{flex:1;padding:20px;font-size:14.5px;line-height:1.65;overflow:auto;min-height:340px}.out p{margin:0 0 14px}.out .empty{color:var(--ink-faint);font-style:italic;font-family:"Instrument Serif",serif;font-size:18px}.pane-foot{padding:12px 18px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--ink-faint);font-family:JetBrains Mono,monospace;letter-spacing:.04em}.controls{margin-top:18px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 22px;display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:18px;align-items:end}.ctl label{display:block;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-family:JetBrains Mono,monospace;margin-bottom:8px}.seg{display:flex;background:var(--bg-warm);border:1px solid var(--line);border-radius:9px;padding:3px;gap:3px}.seg button{flex:1;padding:7px 10px;font-size:12.5px;border-radius:6px;color:var(--ink-soft)}.seg button.on{background:var(--card);color:var(--ink);box-shadow:0 1px #d3ccc766,0 1px 2px #4027120f}.slider{display:flex;align-items:center;gap:10px}.slider input{flex:1;accent-color:var(--accent)}.slider .v{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--ink-soft);width:32px;text-align:right}.run{background:var(--ink);color:var(--bg);padding:13px 22px;border-radius:10px;font-weight:500;font-size:14px;display:flex;align-items:center;gap:8px}.run:hover{background:var(--accent-ink)}.run:disabled{opacity:.6;cursor:not-allowed}.run svg{width:14px;height:14px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}.meters{margin-top:18px;display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.meter{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.meter .lbl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-family:JetBrains Mono,monospace}.meter .val{font-family:"Instrument Serif",serif;font-style:italic;font-size:30px;line-height:1;margin-top:8px;color:var(--ink)}.meter .val.good{color:#2f7434}.meter .val.warn{color:#a35e16}.meter .bar{height:4px;border-radius:3px;background:var(--bg-warm);margin-top:10px;overflow:hidden}.meter .bar i{display:block;height:100%;background:var(--accent);transition:width .3s ease}.meter .bar i.good{background:#47944c}.meter .bar i.warn{background:#c87a30}.pdf-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:18px;align-items:start}.pdf-left{display:flex;flex-direction:column}.pdf-right{min-height:520px}.dropzone{background:var(--card);border:1.5px dashed var(--line);border-radius:var(--radius);padding:32px 24px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s,transform .12s;display:flex;flex-direction:column;align-items:center;gap:10px}.dropzone:hover{border-color:var(--accent);background:linear-gradient(to bottom,var(--accent-wash),var(--card))}.dropzone.drag{border-color:var(--accent);background:var(--accent-wash);transform:scale(1.005)}.dz-icon{width:54px;height:54px;border-radius:14px;background:var(--bg-warm);border:1px solid var(--line);display:grid;place-items:center;color:var(--accent-ink)}.dz-icon svg{width:24px;height:24px}.dz-title{font-family:"Instrument Serif",serif;font-style:italic;font-size:24px;color:var(--ink);letter-spacing:-.01em}.dz-sub{font-size:13px;color:var(--ink-soft)}.dz-sub .link{color:var(--accent-ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.dz-meta{display:flex;gap:8px;align-items:center;margin-top:6px;font-size:11px;color:var(--ink-faint);font-family:JetBrains Mono,monospace}.pdf-list{display:flex;flex-direction:column;max-height:340px;overflow:auto}.pdf-empty{padding:22px 18px;color:var(--ink-faint);font-style:italic;font-family:"Instrument Serif",serif;font-size:16px;text-align:center}.pdf-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--line-soft);cursor:pointer;transition:background .12s}.pdf-item:first-child{border-top:0}.pdf-item:hover{background:var(--bg-warm)}.pdf-item.active{background:var(--accent-wash)}.pdf-item .ic{width:34px;height:42px;border-radius:5px;flex-shrink:0;background:linear-gradient(to bottom right,#ffedea,#ffdbd5);background:linear-gradient(to bottom right,color(xyz 0.889 0.873 0.842),color(xyz 0.808 0.763 0.684));border:1px solid oklch(.85 .05 30);display:grid;place-items:center;color:var(--accent-ink);font-family:JetBrains Mono,monospace;font-size:9px;font-weight:600;letter-spacing:.05em;position:relative}.pdf-item .ic:after{content:"";position:absolute;top:0;right:0;width:9px;height:9px;background:linear-gradient(225deg,var(--card) 50%,oklch(.85 .05 30) 50%);border-left:1px solid oklch(.85 .05 30);border-bottom:1px solid oklch(.85 .05 30)}.pdf-item .meta{flex:1;min-width:0}.pdf-item .name{font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdf-item .info{font-size:11.5px;color:var(--ink-faint);font-family:JetBrains Mono,monospace;letter-spacing:.02em;margin-top:2px}.pdf-item .status{font-size:11px;color:var(--ink-faint);font-family:JetBrains Mono,monospace;letter-spacing:.06em}.pdf-item .status.ok{color:#2f7434}.pdf-item .status.err{color:#b94642}.pdf-item .spin{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--line);border-top-color:var(--accent);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.pdf-item .x{width:24px;height:24px;border-radius:5px;display:grid;place-items:center;color:var(--ink-faint)}.pdf-item .x:hover{background:var(--card);color:var(--ink)}.pdf-item .x svg{width:12px;height:12px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round}@media (max-width: 980px){.pdf-grid{grid-template-columns:1fr}}.signature{text-align:center;margin-top:60px;padding:24px;font-family:"Instrument Serif",serif;font-style:italic;font-size:15px;color:var(--ink-soft)}.signature .heart{color:var(--accent);font-size:14px;display:inline-block;transform:translateY(1px);animation:beat 1.6s ease-in-out infinite}@keyframes beat{0%,to{transform:translateY(1px) scale(1)}30%{transform:translateY(0) scale(1.18)}60%{transform:translateY(1px) scale(1)}}@media (max-width: 980px){.apps{grid-template-columns:repeat(2,1fr)}.sanit-grid{grid-template-columns:1fr}.controls{grid-template-columns:1fr 1fr}.meters{grid-template-columns:repeat(2,1fr)}.screen-login{grid-template-columns:1fr}.login-art{min-height:240px;padding:28px}.login-quote .q{font-size:36px}.login-stamp{display:none}.quick{grid-template-columns:1fr}}.error-msg{font-size:12.5px;color:#b94642;margin:-6px 0 12px;display:flex;gap:6px;align-items:center}.auth-loading{min-height:100vh;display:grid;place-items:center;color:var(--ink-faint);font-family:"Instrument Serif",serif;font-style:italic;font-size:18px}
