:root{font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:16px;color:#142344;background:#f0f4fc;--blue:#2f5eff;--blue-dark:#2144c4;--muted:#62718b;--border:#dce3f1;--focus:#7995ff;--cx:50%;--cy:35%}
*{box-sizing:border-box}
body{margin:0;min-width:280px;position:relative;isolation:isolate}
button,input,select{font:inherit}
button{cursor:pointer;position:relative;overflow:hidden;touch-action:manipulation}
button:disabled{cursor:wait;opacity:.75}
svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.ambient{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 12% 5%,#dde8ff 0,transparent 45%),radial-gradient(circle 420px at var(--cx) var(--cy),#bccfff32,transparent 100%),linear-gradient(120deg,#f6f8fe,#edf2fb);contain:strict}
header{border-bottom:1px solid #ffffffb3;background:#ffffffa8;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.header-inner{max-width:1276px;margin:auto;min-height:86px;padding:20px 32px;display:flex;align-items:center;justify-content:space-between;gap:24px;animation:enter .5s both}
.brand{display:flex;align-items:center;gap:12px;font-size:26px;font-weight:750;letter-spacing:-.06em;line-height:1.3}.brand-dot{color:var(--blue)}.brand small{letter-spacing:.1em;font-size:12px;font-weight:600;color:#6b7891;margin-left:6px;padding-left:16px;border-left:1px solid #d6deec}
.mark{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;color:white;background:linear-gradient(145deg,#547dff,#244bdf);box-shadow:0 5px 12px #2f5eff24,inset 0 1px 1px #ffffff60}
.mark svg{width:25px;height:25px;stroke-width:2.5}
.local{display:flex;align-items:center;gap:8px;padding:9px 14px;border:1px solid #dce5f0;border-radius:100px;background:#ffffff99;font-size:13px;color:#576984}.local svg{width:17px;height:17px;stroke:#547197}
main{max-width:1276px;margin:auto;padding:38px 32px 24px}
.intro{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px;animation:enter .55s .08s both}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.11em;color:var(--blue);line-height:1.6}
h1{font-size:clamp(28px,3.1vw,39px);font-weight:700;line-height:1.22;letter-spacing:-.045em;margin:10px 0 12px}h1 span{color:var(--blue)}
p{font-size:16px;color:var(--muted);line-height:1.6}.intro p{margin:0}
.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:50px;padding:13px 20px;border:1px solid transparent;border-radius:13px;font-size:15px;font-weight:650;transition:transform .2s,background .2s,box-shadow .2s,border-color .2s;line-height:1.4;flex-shrink:0}
.primary{color:white;background:linear-gradient(125deg,#426fff,var(--blue));box-shadow:0 5px 12px #2f5eff25,inset 0 1px 0 #ffffff26}
.primary:hover{transform:translateY(-2px);box-shadow:0 8px 19px #2f5eff32;background:linear-gradient(125deg,#355fe7,#234dde)}
.primary:active,.secondary:active{transform:translateY(0) scale(.98)}
.secondary{background:white;color:var(--blue);border-color:#c7d5ff;box-shadow:0 3px 10px #294aa509}
.secondary:hover{background:#f3f6ff;border-color:#7996ff;transform:translateY(-2px)}
button:focus-visible,input:focus-visible,select:focus-visible,pre:focus-visible{outline:3px solid var(--focus);outline-offset:4px}
#empty{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:360px;background:#ffffffde;border:1px solid white;border-radius:24px;box-shadow:0 20px 65px #334b7d0d,0 2px 6px #334b7d06;overflow:hidden;animation:enter .6s .15s both}
.intake{display:flex;align-items:flex-start;justify-content:center;flex-direction:column;padding:38px 42px}
.upload-glyph{width:68px;height:68px;border-radius:20px;display:grid;place-items:center;background:linear-gradient(145deg,#edf2ff,#e1eaff);color:var(--blue);border:1px solid #cddcff;box-shadow:0 8px 20px #2f5eff0a;animation:glyph-in .75s .18s both}
.upload-glyph svg{width:36px;height:36px;stroke-width:1.6}
h2{font-size:25px;font-weight:700;letter-spacing:-.03em;line-height:1.3;margin:22px 0 10px}
.intake p{max-width:370px;margin:0 0 22px}.file-hint{font-size:13px;color:#6b7891;display:block;margin-top:16px;line-height:1.5}
.preview-wrap{padding:36px 42px;display:flex;justify-content:center;flex-direction:column;background:linear-gradient(150deg,#eaf0ffb0,#f4f7fe);border-left:1px solid #e8edf7}
.preview-label{font-size:12px;letter-spacing:.11em;font-weight:650;color:#687a99;margin-bottom:16px}
.preview-window{background:white;border:1px solid #d8e0ef;border-radius:14px;box-shadow:0 16px 25px #2a447717;transform:rotate(-1deg);animation:preview-in .7s .25s both;transition:transform .3s}
.preview-window:hover{transform:rotate(0) translateY(-3px)}
.preview-bar{display:flex;gap:5px;align-items:center;background:#f5f7fc;border-bottom:1px solid #e8ecf4;border-radius:14px 14px 0 0;padding:12px 16px}
.preview-bar i{width:7px;height:7px;border-radius:50%;background:#b7c4db}.preview-bar span{font-size:12px;color:#7e8ba1;margin-left:auto}
.preview-tab{margin:10px 12px 0;display:inline-flex;gap:8px;align-items:center;background:#eaf0ff;color:#345dce;border-radius:8px;padding:8px 12px;font-size:13px;font-weight:600}.preview-tab svg{width:16px;height:16px}
pre{font:16px/1.85 Inter,"Segoe UI",Arial,sans-serif;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;letter-spacing:.005em}
.demo{padding:18px 24px 26px}.demo span{animation:line-in .4s both}.demo span:first-child{font-weight:650;animation-delay:.4s}.demo span:nth-child(2){animation-delay:.5s}.demo span:nth-child(3){animation-delay:.6s}.demo span:nth-child(4){animation-delay:.7s}
.preview-caption{display:flex;align-items:center;gap:7px;font-size:13px;color:#637694;margin-top:20px}.check-small{color:var(--blue);font-size:16px}
#workspace{animation:enter .4s both}
.settings{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:18px;padding:20px 24px;background:#ffffffa8;border:1px solid white;border-radius:17px}
.file-info{display:flex;align-items:center;gap:12px;min-width:0}.file-info>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.file-symbol{color:#16816a;background:#e8f6f2;width:40px;height:44px;border-radius:10px;display:grid;place-items:center;flex-shrink:0}
.field-caption{font-size:12px;font-weight:650;letter-spacing:.07em;color:#77839c}
#filename{font-size:14px;font-weight:650;overflow-wrap:anywhere;color:#2f4264}
.setting-fields{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.settings label{display:flex;flex-direction:column;gap:6px;font-size:14px;color:#657491}
select,input{background:#fff;border:1px solid #d5dfef;border-radius:8px;font-size:14px;color:#26385a;padding:9px 11px;min-height:38px;max-width:100%;transition:border-color .2s,box-shadow .2s}
select:hover,input:hover{border-color:#91a8ef}#year{width:88px}#sheet{max-width:230px}
.browser{border:1px solid #d7dfef;border-radius:20px;box-shadow:0 20px 50px #233d7010,0 2px 5px #1e335006;overflow:hidden;background:#e7edf9}
.tab-rail{padding:12px 12px 0;background:linear-gradient(180deg,#e3eafa,#e9eefa);position:relative}
#tabs{display:flex;gap:4px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#bdcbe8 transparent;scroll-padding:8px}
#tabs::-webkit-scrollbar{height:5px}#tabs::-webkit-scrollbar-thumb{background:#bdcbe8;border-radius:10px}
#tabs button{display:flex;gap:9px;align-items:center;padding:14px 18px;min-height:50px;color:#60718e;background:transparent;border:1px solid transparent;border-radius:12px 12px 0 0;font-size:14px;font-weight:500;line-height:1.45;white-space:nowrap;flex-shrink:0;max-width:none;transition:background .2s,color .2s}
#tabs button:hover{background:#f5f7ff;color:#2c4aa0}
#tabs button[aria-selected=true]{background:#fff;color:var(--blue);border-color:#d7dfef;border-bottom-color:white;font-weight:650;box-shadow:0 -2px 8px #2e4b7d05}
.tab-icon{width:20px;height:20px;display:grid;place-items:center;font-size:11px;font-weight:650;background:#ffffff70;border-radius:6px;color:#5c7197;flex-shrink:0}
[aria-selected=true] .tab-icon{background:#ecf1ff;color:var(--blue)}
#tabs button:focus-visible{outline-offset:-4px}
.paper{min-height:390px;background:white;padding:30px 36px 34px}
.paper-top{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #e9edf5;padding-bottom:24px}
.child-heading{display:flex;align-items:center;gap:16px;min-width:0}.child-heading>div:last-child{min-width:0}
.child-avatar{width:58px;height:58px;display:grid;place-items:center;border-radius:17px;background:linear-gradient(145deg,#eff3ff,#e2eafe);border:1px solid #dce5ff;color:var(--blue);font-size:22px;font-weight:650;flex-shrink:0}
.paper h2{margin:5px 0 6px;font-size:25px;overflow-wrap:anywhere}.paper-top p{margin:0;font-size:14px;color:#748099}
.copy-button{min-width:174px}.copy-button.is-copied{background:#146e59;box-shadow:0 4px 12px #146e5920}
.copy-button.is-copied svg{animation:check-in .3s both}
.list-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;color:#7b88a2;font-size:12px;font-weight:650;letter-spacing:.075em;margin:24px 0 16px}
.format-hint{font-size:12px;font-weight:500;letter-spacing:0;color:#8290a8}
#output{background:linear-gradient(110deg,#f6f8fc,#fbfcfe);border:1px solid #edf0f7;border-radius:14px;padding:20px 24px;color:#2b3d5f;font-variant-numeric:tabular-nums}
#output .presence-line{display:inline;animation:line-in .35s both;animation-delay:var(--line-delay,0ms)}
#output .name-line{font-weight:650;color:#142344}
#noPresence{font-size:14px;margin:20px 0 0;padding:0 2px}
footer{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:30px;padding:8px 2px;color:#7a87a0;font-size:13px;line-height:1.5}
.footer-brand{font-size:16px;font-weight:650;color:#51607b;letter-spacing:-.03em;white-space:nowrap}.footer-brand>span{color:var(--blue)}.footer-brand small{font-size:12px;font-weight:400;margin-left:8px;letter-spacing:0}
#notice:empty{display:none}#notice:not(:empty){display:flex;align-items:center;gap:10px;background:#fff7e4;color:#73551b;border:1px solid #f0e3bf;border-radius:12px;padding:13px 16px;margin-bottom:18px;font-size:14px;line-height:1.5;animation:enter .25s both}
#notice[data-error=true]{background:#fff0f1;color:#9f3442;border-color:#f4d9dd}
body.is-loading #notice::before{content:"";width:16px;height:16px;border:2px solid #bbaa70;border-right-color:transparent;border-radius:50%;flex-shrink:0;animation:spin .8s linear infinite}
body.is-loading #importButton svg{animation:soft-pulse 1s ease-in-out infinite}
#toast{position:fixed;bottom:28px;left:50%;z-index:10;display:flex;align-items:center;gap:10px;padding:14px 20px;border-radius:14px;background:#172a4c;color:white;box-shadow:0 10px 35px #13234833;font-size:14px;pointer-events:none;opacity:0;transform:translate(-50%,15px) scale(.98);transition:opacity .22s,transform .22s;max-width:calc(100% - 32px);width:max-content;line-height:1.45}
#toast.visible{opacity:1;transform:translate(-50%,0) scale(1)}.toast-check{width:24px;height:24px;display:grid;place-items:center;color:#b7ffe1;background:#ffffff12;border-radius:50%;flex-shrink:0}
.ripple{position:absolute;border-radius:50%;background:#ffffff4a;pointer-events:none;transform:scale(0);animation:ripple-out .6s ease-out forwards}
.secondary .ripple{background:#2f5eff18}
[hidden]{display:none!important}
@keyframes enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes glyph-in{from{opacity:0;transform:translateY(8px) rotate(-8deg) scale(.94)}to{opacity:1;transform:none}}
@keyframes preview-in{from{opacity:0;transform:translateY(16px) rotate(-2deg)}to{opacity:1;transform:rotate(-1deg)}}
@keyframes line-in{from{opacity:0}to{opacity:1}}
@keyframes check-in{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes soft-pulse{50%{opacity:.45}}
@keyframes ripple-out{to{transform:scale(1);opacity:0}}
@media(max-width:960px){.settings{align-items:flex-start;flex-direction:column}.setting-fields{width:100%}.intake,.preview-wrap{padding:30px}.intro{align-items:flex-start}h1 span{display:block}}
@media(max-width:680px){.header-inner{min-height:74px;padding:16px 20px}.brand{font-size:24px}.brand small{display:none}.local{padding:8px}.local span{display:none}main{padding:26px 16px 18px}.intro{flex-direction:column;gap:20px;margin-bottom:22px}.intro>.primary{width:100%}h1{font-size:31px}.intro p{font-size:15px}.eyebrow{font-size:12px}#empty{grid-template-columns:1fr;border-radius:20px}.intake{padding:28px}.preview-wrap{padding:26px 28px;border-left:none;border-top:1px solid #e8edf7}.intake h2{font-size:23px}.upload-glyph{width:58px;height:58px}.upload-glyph svg{width:31px;height:31px}.settings{padding:18px}.setting-fields{gap:10px}.setting-fields label:first-child{width:100%}#sheet{max-width:none}.setting-fields label:nth-child(2){flex:1}.setting-fields select{width:100%}.browser{border-radius:16px}.paper{padding:24px 20px}.paper-top{align-items:stretch;flex-direction:column;gap:20px}.child-heading{gap:12px}.child-avatar{width:46px;height:46px;border-radius:13px;font-size:18px}.paper h2{font-size:22px}.paper .eyebrow{font-size:12px}.copy-button{width:100%}#output{padding:18px 16px;font-size:16px}#tabs button{padding:13px 15px;font-size:14px}.list-heading .format-hint{display:none}footer{align-items:flex-start;flex-direction:column;gap:8px;font-size:12px}.demo{font-size:15px;padding:18px 18px 24px}#toast{bottom:20px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.preview-window{transform:none}.primary:hover,.secondary:hover{transform:none}.ripple{display:none}.ambient{background:linear-gradient(120deg,#f6f8fe,#edf2fb)}}
