
:root{--ink:#20241f;--paper:#f4ecd8;--panel:#fffaf0;--pine:#16302b;--pine-2:#0e2420;--mustard:#e0a327;--mustard-2:#b97e15;--rust:#c1462a;--line:rgba(32,36,31,.14);--ok:#2f6b5e;--radius:4px}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:'Zen Kaku Gothic New',sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:'Shippori Mincho',serif;margin:0;line-height:1.3}
a{color:inherit}
.mono{font-family:'Space Mono',monospace;letter-spacing:.06em}
.draft{background:var(--rust);color:#fff;text-align:center;font-size:.78rem;padding:8px 14px;line-height:1.6}
.topbar{background:var(--pine);color:var(--paper);padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:14px;position:sticky;top:0;z-index:30}
.topbar .brand{font-family:'Shippori Mincho',serif;font-size:1rem}
.topbar .brand small{font-family:'Space Mono',monospace;font-size:.6rem;letter-spacing:.12em;opacity:.6;margin-left:8px}
.topbar .who{font-size:.8rem;display:flex;align-items:center;gap:12px}
.topbar .who .av{width:30px;height:30px;border-radius:50%;background:var(--mustard);color:var(--pine-2);display:grid;place-items:center;font-weight:700;font-size:.8rem}
.shell{display:grid;grid-template-columns:230px 1fr;min-height:70vh;max-width:1240px;margin:0 auto}
.side{border-right:1px solid var(--line);padding:22px 0}
.side button{display:block;width:100%;text-align:left;background:none;border:0;border-left:3px solid transparent;font-family:inherit;font-size:.88rem;padding:12px 20px;cursor:pointer;color:var(--ink);opacity:.75}
.side button:hover{opacity:1;background:rgba(32,36,31,.04)}
.side button.on{opacity:1;font-weight:700;border-left-color:var(--mustard);background:var(--panel)}
.side .grp{font-family:'Space Mono',monospace;font-size:.6rem;letter-spacing:.14em;opacity:.4;padding:16px 20px 6px}
.main{padding:26px 30px 60px;min-width:0}
.pane{display:none}
.pane.on{display:block}
.ph{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:6px}
.ph h2{font-size:1.35rem}
.ph .sub{font-size:.8rem;opacity:.6;margin-top:6px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;margin-top:18px}
.card > h3{font-size:1rem;margin-bottom:4px}
.card .hint{font-size:.76rem;opacity:.6;margin:4px 0 14px;line-height:1.7}
.f{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px 18px}
.fi{display:flex;flex-direction:column;gap:6px}
.fi.wide{grid-column:1/-1}
.fi label{font-size:.76rem;font-weight:700;opacity:.8}
.fi label .req{color:var(--rust);font-size:.68rem;margin-left:5px}
.fi label .opt{opacity:.5;font-weight:400;font-size:.68rem;margin-left:5px}
.fi input,.fi select,.fi textarea{font-family:inherit;font-size:.88rem;padding:10px 12px;border:1px solid var(--line);border-radius:3px;background:#fff;color:var(--ink);width:100%}
.fi textarea{min-height:80px;resize:vertical}
.fi .note{font-size:.7rem;opacity:.55}
.chk{display:flex;flex-wrap:wrap;gap:8px}
.chk label{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;border:1px solid var(--line);border-radius:999px;padding:7px 13px;background:#fff;cursor:pointer}
.badge{display:inline-flex;align-items:center;gap:5px;font-family:'Space Mono',monospace;font-size:.62rem;letter-spacing:.08em;padding:4px 9px;border-radius:2px;background:rgba(32,36,31,.08)}
.badge.ok{background:rgba(47,107,94,.16);color:#1f5044}
.badge.warn{background:rgba(224,163,39,.22);color:var(--mustard-2)}
.badge.ng{background:rgba(193,70,42,.16);color:#8e3018}
.tbl{width:100%;border-collapse:collapse;font-size:.84rem}
.tbl th,.tbl td{text-align:left;padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl th{font-family:'Space Mono',monospace;font-size:.62rem;letter-spacing:.1em;opacity:.55;font-weight:400}
.tbl .file{display:inline-flex;align-items:center;gap:8px}
.tbl input[type=date]{font-family:inherit;font-size:.82rem;padding:6px 8px;border:1px solid var(--line);border-radius:3px}
.up{display:inline-flex;align-items:center;gap:7px;font-size:.78rem;font-weight:700;border:1px dashed var(--mustard-2);color:var(--mustard-2);background:#fff;border-radius:3px;padding:8px 13px;cursor:pointer}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-top:6px}
.slot{aspect-ratio:4/3;border:1px dashed var(--line);border-radius:var(--radius);background:#fff;display:grid;place-items:center;text-align:center;font-size:.74rem;padding:8px;cursor:pointer;position:relative;line-height:1.6}
.slot.req{border-color:var(--mustard-2);background:rgba(224,163,39,.07)}
.slot .n{position:absolute;top:6px;left:8px;font-family:'Space Mono',monospace;font-size:.58rem;opacity:.45}
.slot .plus{font-size:1.3rem;opacity:.35;display:block}
.stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.stat .b{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.stat .b .k{font-family:'Space Mono',monospace;font-size:.6rem;letter-spacing:.12em;opacity:.5}
.stat .b .v{font-size:1.45rem;font-family:'Shippori Mincho',serif;margin-top:6px}
.stat .b .m{font-size:.72rem;opacity:.6;margin-top:4px}
.steps{display:flex;gap:0;flex-wrap:wrap;margin-top:14px}
.steps .s{flex:1;min-width:120px;border-top:3px solid var(--line);padding:12px 12px 0;font-size:.78rem;opacity:.5}
.steps .s.done{border-top-color:var(--ok);opacity:1}
.steps .s.now{border-top-color:var(--mustard);opacity:1;font-weight:700}
.steps .s b{display:block;font-family:'Space Mono',monospace;font-size:.58rem;letter-spacing:.1em;opacity:.6;font-weight:400}
.alert{border-left:3px solid var(--mustard);background:rgba(224,163,39,.1);padding:12px 16px;font-size:.82rem;border-radius:0 3px 3px 0;margin-top:10px;line-height:1.8}
.alert.ng{border-left-color:var(--rust);background:rgba(193,70,42,.08)}
.rowbtns{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}
.btn{font-family:inherit;font-size:.85rem;font-weight:700;padding:12px 22px;border-radius:2px;border:1px solid transparent;cursor:pointer}
.btn-p{background:var(--mustard);color:var(--pine-2)}
.btn-g{background:transparent;border-color:var(--line)}
.addrow{margin-top:12px}
footer{background:var(--pine);color:var(--paper);text-align:center;font-size:.76rem;padding:26px 20px;line-height:2}
@media(max-width:820px){
  .shell{grid-template-columns:1fr}
  .side{border-right:0;border-bottom:1px solid var(--line);display:flex;overflow-x:auto;padding:0}
  .side .grp{display:none}
  .side button{white-space:nowrap;width:auto;border-left:0;border-bottom:3px solid transparent;padding:14px 16px}
  .side button.on{border-left:0;border-bottom-color:var(--mustard)}
  .main{padding:20px 18px 50px}
}

/* --- auth / app additions --- */
.auth-wrap{max-width:440px;margin:0 auto;padding:40px 20px 70px}
.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:28px 26px}
.auth-card h1{font-size:1.3rem;margin-bottom:6px}
.auth-card .lead{font-size:.82rem;opacity:.65;margin:6px 0 20px;line-height:1.8}
.auth-card .f{grid-template-columns:1fr}
.auth-card .btn{width:100%;margin-top:18px}
.auth-links{font-size:.8rem;margin-top:16px;text-align:center;line-height:2}
.msg{border-left:3px solid var(--ok);background:rgba(47,107,94,.1);padding:11px 15px;font-size:.82rem;border-radius:0 3px 3px 0;margin:12px 0;line-height:1.8}
.msg.err{border-left-color:var(--rust);background:rgba(193,70,42,.09)}
.topbar a{text-decoration:none}
.topbar .logout{font-size:.72rem;border:1px solid rgba(244,236,216,.45);border-radius:2px;padding:6px 12px}
.topbar .logout:hover{background:var(--paper);color:var(--pine-2)}
.filebox{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.filebox input[type=file]{font-size:.76rem;max-width:230px}
.filebox a{font-size:.78rem}
.slot{overflow:hidden}
.slot img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.slot input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}
.slot .cap{position:absolute;left:0;right:0;bottom:0;background:rgba(14,36,32,.72);color:#fff;font-size:.62rem;padding:3px 5px}
.sticky-save{position:sticky;bottom:0;background:var(--paper);border-top:1px solid var(--line);padding:12px 0;margin-top:22px;display:flex;gap:10px;flex-wrap:wrap}
.small{font-size:.74rem;opacity:.6;line-height:1.8}
.pane{display:block}
