*{margin:0;padding:0;box-sizing:border-box;min-width:0}
:root{--bg:#0d0d14;--surface:#1a1a2e;--surface2:#252547;--surface3:#2f2f5e;--amber:#e8a838;--green:#4ecca3;--red:#c0392b;--purple:#8b5cf6;--blue:#3b82f6;--text:#d4d4d8;--muted:#71717a;--sidebar-w:200px;--loom-teal:#14b8a6;--amber-grad:#d4912e;--purple-grad:#7c3aed;--text-on-color:#0d0d14;--text-on-dark:white;--text-faint:rgba(255,255,255,0.45);--shadow-sm:0 2px 8px rgba(0,0,0,.3);--shadow-md:0 8px 24px rgba(0,0,0,.4);--bg-image:none;--bg-image-opacity:0}
html,body{max-width:100%;overflow-x:hidden}
body{background:var(--bg);color:var(--text);font-family:'DM Sans',sans-serif;display:flex;min-height:100dvh;overflow:hidden}
body::before{content:'';position:fixed;inset:0;z-index:-1;background:var(--bg-image) center/cover no-repeat;opacity:var(--bg-image-opacity);pointer-events:none;transition:opacity .3s}
h1,h2,h3,h4{font-family:'Cinzel',serif;color:var(--amber)}
button{cursor:pointer;font-family:'DM Sans',sans-serif}
input,textarea,select{font-family:'DM Sans',sans-serif;background:var(--surface);color:var(--text);border:1px solid var(--surface2);border-radius:8px;padding:.5rem .7rem;outline:none;width:100%}
input[type=checkbox],input[type=radio]{width:auto}
input:focus,textarea:focus{border-color:var(--amber)}
a{color:var(--amber);text-decoration:none}
.hidden{display:none!important}
::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--surface2);border-radius:3px}
/* Auth Overlay */
#authOverlay{position:fixed;top:0;left:0;width:100%;min-height:100dvh;height:100vh;background:linear-gradient(rgba(13,13,20,0.75),rgba(13,13,20,0.85)),url(/img/brand/auth-background.webp) no-repeat center center/cover;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:100;gap:1rem}
#authOverlay h1{font-size:2rem;color:var(--amber)}
#authOverlay input{max-width:250px;text-align:center;padding:.8rem}
#authOverlay button{padding:.7rem 2rem;border:none;border-radius:10px;background:linear-gradient(135deg,var(--amber),var(--amber-grad));color:var(--text-on-color);font-size:1rem;font-weight:600;min-height:44px;cursor:pointer}
#authOverlay button:disabled{opacity:.6;cursor:not-allowed}
/* Main Content */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.topbar{background:var(--surface);padding:.5rem 1rem;display:flex;align-items:center;gap:1rem;border-bottom:1px solid var(--surface2);flex-shrink:0}
.topbar .page-title{font-family:'Cinzel',serif;font-size:1rem;color:var(--amber)}
.topbar .spacer{flex:1}
.topbar-info{font-size:.875rem;color:var(--muted);display:flex;gap:1rem;align-items:center}
#pacingTimer{font-family:'Cinzel',serif;color:var(--green);cursor:pointer}
.content{flex:1;overflow-y:auto;padding:1.2rem}

/* Shared Components */
.card{background:var(--surface);border:1px solid var(--surface2);border-radius:12px;padding:1rem;margin-bottom:.8rem}
.card h3{font-size:.95rem;margin-bottom:.6rem}
.btn{padding:.45rem .9rem;border:none;border-radius:8px;font-size:1rem;font-weight:500;transition:all .15s;min-height:44px;min-width:44px}
.btn:hover{filter:brightness(1.1)}
.btn-amber{background:linear-gradient(135deg,var(--amber),var(--amber-grad));color:var(--text-on-color)}
.btn-purple{background:linear-gradient(135deg,var(--purple),var(--purple-grad));color:var(--text-on-dark)}
.btn-green{background:var(--green);color:var(--text-on-color)}
.btn-red{background:var(--red);color:var(--text-on-dark)}
.btn-ghost{background:var(--surface2);color:var(--text)}
.btn-sm{padding:.4rem .8rem;font-size:.875rem;min-height:36px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.6rem}
.badge{display:inline-block;font-size:.75rem;padding:.1rem .4rem;border-radius:6px}

/* AI Response */
.ai-box{background:linear-gradient(135deg,rgba(139,92,246,.08),rgba(59,130,246,.05));border:1px solid rgba(139,92,246,.2);border-radius:12px;padding:1rem;white-space:pre-wrap;line-height:1.7;font-size:.95rem}
.ai-box h2,.ai-box h3{font-size:.95rem;color:var(--purple);font-family:'DM Sans',sans-serif;font-weight:600;margin:.6rem 0 .2rem}
.ai-box strong{color:var(--amber)}
.loading{display:flex;align-items:center;gap:.5rem;color:var(--muted);font-size:.95rem;padding:1rem}
.spin{width:18px;height:18px;border:2px solid var(--surface2);border-top-color:var(--amber);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
/* Modal */
.modal-bg{position:fixed;top:0;left:0;width:100%;height:100vh;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem}
.modal{background:var(--surface);border:1px solid var(--surface2);border-radius:14px;padding:1.5rem;width:100%;max-width:650px;max-height:85vh;overflow-y:auto}
/* Responsive */
/* Time Panel */
.time-panel { background: var(--surface2); }
.time-panel-grid { display: grid; grid-template-columns: 1fr 1.5fr; gap: 1rem; }
.time-round-display { font-size: 2.5rem; font-weight: 700; text-align: center; }
.time-turn-display { font-size: 0.9rem; color: var(--muted); text-align: center; min-height: 1.2em; }
.time-controls { display: flex; gap: .3rem; justify-content: center; margin-top: .5rem; }
.time-rest-row { display: flex; gap: .5rem; justify-content: center; margin-top: .8rem; padding-top: .8rem; border-top: 1px solid var(--surface3); }
.effect-row { display: grid; grid-template-columns: 2fr 1fr 1fr auto; gap: .3rem; align-items: center; padding: .25rem .4rem; border-bottom: 1px solid var(--surface3); font-size: .9rem; }
.effect-row.expired { opacity: .4; text-decoration: line-through; }
.effect-name { font-weight: 600; }
.effect-duration { font-variant-numeric: tabular-nums; }

.time-controls{flex-wrap:wrap}
.time-controls button:not(.push-btn),
.time-rest-row button,
.time-effects-col > button{
  background:var(--surface3);color:var(--text);border:1px solid var(--surface3);
  border-radius:8px;padding:.55rem .9rem;font-size:.9rem;font-weight:500;
  min-height:44px;white-space:nowrap;transition:filter .15s}
.time-controls button:not(.push-btn):hover,
.time-rest-row button:hover,
.time-effects-col > button:hover{filter:brightness(1.15)}
.time-controls button:not(.push-btn):active,
.time-rest-row button:active{background:var(--amber);color:var(--text-on-color)}
.time-controls .push-btn{flex:1 1 100%;order:3;margin-top:.4rem}
.time-rest-row button{flex:1;max-width:220px}
.time-effects-col > button{margin-top:.5rem}

@media(max-width:900px){
  .sidebar{width:160px}
  .live-grid,.grid-2,.time-panel-grid{grid-template-columns:1fr}
}
@media(max-width:768px){
  .sidebar{display:none}
  .bottom-nav{display:flex}
  .main{overflow-y:auto;width:100%;max-width:100%;overflow-x:hidden}
  .content{padding:.8rem;max-width:100%;overflow-x:hidden}
  .live-grid,.grid-2{grid-template-columns:1fr}
  body{padding-bottom:60px}
}
@media(max-width:480px){
  .content{padding:.5rem}
  .topbar{padding:.4rem .6rem}
}
.save-indicator { color: var(--muted); transition: color .2s; }
.save-indicator.saved { color: var(--green); }
.save-indicator.error { color: var(--red); }
